在Django测试中,在调试期间在控制台中打印时,在分配给变量时会有空查询集但不是空的

时间:2018-02-02 11:53:48

标签: python django django-models automated-tests django-testing

我正在调试 Django(1.11.8)测试并观察奇怪的行为,当在调试器中停止并切换到Ipython控制台输入时:

Model.objects.all()

返回非空Queryset。但是,当相同的表达式分配给变量时,例如:

obj_qs = Model.objects.all()

然后obj_qs为空Queryset。我希望这两个陈述都有相同的结果。我在测试设置中遗漏了哪些重要内容?我使用setUpTestData()setUp()方法初始化测试对象。<​​/ p>

1 个答案:

答案 0 :(得分:0)

这种效果的简短解释是查询集是懒惰的。我在代码中对它进行评估之前检查Queryset,这就是调试空查询集时的原因 - 向实际使用Queryset的行前进几步,证明一切正常。