我在测试应用时遇到了一个反复出现的问题。每当我在tests.py中更改或创建()任何对象时,都无法在models.py中找到这些更改 - 并且在同一测试中发生 。
伪代码:
tests.py:
def test_something(self):
...
Norm.objects.create(...)
self.player_a.print_all_norms()
...
models.py:
def print_all_norms():
a = Norm.objects.all()
print a
# prints [], the Norm object created in tests.py wasn't found
return
编辑: 澄清 - 我无法在创建它的测试中找到对象。 在test_something()中创建一个Norm对象,它调用models.py中的一个函数。 当函数尝试使用Norm.objects.all()查找以前创建的对象时,它会失败,测试会恢复,然后测试也会失败。
答案 0 :(得分:1)
测试使用临时数据库,如test database docs中所述,因此在测试完成后,您将无法通过模型管理器找到这些对象。
是否在测试中找不到对象或者在执行测试后尝试找到它?
如果在测试中没有找到它,请尝试确保您具有适当的权限(如测试数据库文档中所述)
如果要在某种一致的基础上将预定值加载到数据库中,在测试之外,您可能希望使用fixtures