django tests.py don';t反映在models.py中

django tests.py don';t反映在models.py中,django,unit-testing,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.obj

我在测试我的应用程序时经常遇到问题。每当我从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()查找以前创建的对象时,它失败,测试继续,然后测试也失败。

测试使用中记录的临时数据库,因此测试完成后,您将无法通过模型管理器找到这些对象

是不是在测试中找不到对象,还是在执行测试后试图找到对象时

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


如果您想在某种程度上一致地将预先确定的值加载到数据库中,在测试之外,您可能想使用

我想您应该尝试保存()对象create()方法内置了保存功能。正如在文档页面的几个地方所描述的(没有permalink…),我编辑了我的问题。它没有在测试中找到对象。我只需要那个特定测试的对象,创建它作为TestCase.setUp的一部分或者从一个fixture加载它会导致其他测试失败。我阅读了文档并相信我拥有适当的权限。