gpt4 book ai didi

python - Django TestCase 不保存我的模型

转载 作者:行者123 更新时间:2023-12-02 04:49:25 27 4
gpt4 key购买 nike

我目前正在为 Django 应用程序编写一些测试。我的应用程序的 Signals.py 文件中有以下独立函数:

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()

在我的测试用例中,我将其称为如下:

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 循环中捕获我新创建的 period 对象(我可以通过 print period 看到它的详细信息打印到控制台),但是我的 assertEqual( )测试失败 - 告诉我batch_processed属性仍然是False。

就好像 period.save() 事务没有被调用。

我知道在 1.8 之前的 Django 版本中,您必须使用 TransactionTestCase 类,但我目前正在为该项目运行 1.8.3,所以我不认为这是问题所在。

我需要做些什么才能让测试用例正确反射(reflect)我在此函数中执行的 model.save() 操作,从而使该函数被测试覆盖?

最佳答案

尝试使用refresh_from_db :

# ...
updateLeaveCounts()
p.refresh_from_db()
self.assertEqual(p.batch_processed, True)
# ...

关于python - Django TestCase 不保存我的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com