tests.py中的django更改不反映在models.py中

时间:2011-07-29 17:06:50

标签: django unit-testing

我在测试应用时遇到了一个反复出现的问题。每当我在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()查找以前创建的对象时,它会失败,测试会恢复,然后测试也会失败。

1 个答案:

答案 0 :(得分:1)

测试使用临时数据库,如test database docs中所述,因此在测试完成后,您将无法通过模型管理器找到这些对象。

是否在测试中找不到对象或者在执行测试后尝试找到它?

如果在测试中没有找到它,请尝试确保您具有适当的权限(如测试数据库文档中所述)

如果要在某种一致的基础上将预定值加载到数据库中,在测试之外,您可能希望使用fixtures

相关问题