我目前正在爲Django應用程序編寫一些測試。我有我的應用程序的signals.py文件以下獨立功能:Django 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()
正趕上我的新創建的時期:
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()
,並在我的測試用例,我如下調用它對象在for循環中(我可以通過print period
看到它的詳細信息打印到控制檯),但是我的assertEqual()測試失敗 - 告訴我batch_processed屬性仍然是False。
就好像沒有調用period.save()
事務。
我知道,在1.8之前的Django版本中,您必須使用TransactionTestCase類,但此刻我正在爲此項目運行1.8.3,所以我不認爲這是問題所在。
有什麼我需要做的,讓TestCases正確地反映我在這個函數中執行的model.save()
動作,因此這個函數被測試覆蓋了嗎?
這是無關的測試。 'p'與保存在'updateLeaveCounts'中的對象不是同一個對象。 –