В настоящее время я пишу несколько тестов для приложения Django. У меня есть следующие автономные функции в файле signals.py моего приложения:Django TestCase не сохраняет мои модели
def updateLeaveCounts():
# Setting some variables here
todaysPeriods = Period.objects.filter(end__lte=today_end, end__gte=today_start).filter(request__leavetype="AN")
for period in todaysPeriods:
print period
counter = LeaveCounter.objects.get(pk=period.request.submitter)
# some Logic here
period.batch_processed = True
period.save()
и в моем TestCase, я звоню его следующим образом:
def test_johnsPostLeaveCounters(self):
# Some setup here
p = Period.objects.create(request=request,start=datetime(today.year,today.month,today.day,9),end=datetime(today.year,today.month,today.day,16,30),length='whole')
updateLeaveCounts()
self.assertEqual(p.batch_processed,True)
updateLeaveCounts()
догоняет мой вновь созданный Период объект в цикле for (я могу видеть, что его данные напечатаны на консоли print period
), но мой тест assertEqual() не работает - сообщив мне, что атрибут batch_processed по-прежнему является False.
Это как если бы сделка period.save()
не была вызвана.
Я знаю, что в версиях Django до 1.8 вам нужно будет использовать класс TransactionTestCase, но сейчас я запускаю 1.8.3 для этого проекта, поэтому я не считаю, что это проблема ,
Есть ли что-то, что я должен сделать, чтобы TestCases правильно отразили действие model.save()
, которое я выполняю в этой функции, и, следовательно, эта функция покрыта тестами?
Это не имеет ничего общего с тестами. 'p' - это просто не тот объект, который был сохранен в' updateLeaveCounts'. –