我有一个测试类,在其中我将对象属性设置为setUp()
的一部分,如下所示:
myObj = model.MyModel.objects.filter(myfilters)
myObj.the_property = 1234
myObj.save()
在这三行setUp()
调用一个外部方法之前,该方法将创建对象,然后使用指示的filter
语句选择该对象。
在setUp()
中,我确认属性设置正确:
首先我只是
print(myObj.the_property)
然后我什至
q = models.MyObj.objects.filter(myfilters)
print(q.values)
在两个打印语句中,我都能看到myObj.the_property
被设置为1234
,正如预期的那样。
然后,按照我的test_
方法
obj = models.MyObj.objects.filter(myfilters)[0]
print(obj.the_property)
这一次,打印语句将打印None
。
是否应该这样做?在测试开始之前,我该如何一次分配作业?
我可以通过将作业移到测试中来轻松解决问题,但是我会重复自己。
我试图找到我的代码有问题,但是这个问题似乎源于Django内部的某个地方。我...
...检查了id
值。 myfilters
每次都获取相同的对象。我肯定在看正确的对象。
...仅运行一种test_
方法。其他测试不会有任何副作用。
...将我的检查从测试方法中移到了测试的开始,在filter
和print
行之前没有任何其他代码。
...将作业和save()
剪切/粘贴到我的test_
方法的开头(在filter
行之前),并在执行该操作时如预期般运作。