Django TestRunner不正确的查询计数,损坏的数据?将军混乱

时间:2011-08-19 19:02:40

标签: django unit-testing nose

我遇到了一个非常奇怪的问题。

我有一个测试类,它继承了django.test.TestCase,它有大约5个不同的测试。 当我运行我的完整测试套件(使用nose,并指定sqlite作为后端)时,会出现一系列故障。当我去调试测试时,单独运行它们会很顺利。

在我的一个测试中,我在添加其他对象之前得到了对象的数量。离。

test_count = TestObject.objects.all().count()
# Add an entry to TestObject
self.assertEqual(test_count + 1, TestObject.objects.all().count()) # should pass

令人困惑的是,它在单独运行时可以正常工作,但在与其他测试运行时则无法正常工作。 在pdb中,当我查看变量时,test_count等于1,但TestObjects.objects.all().count()在第一行之后等于[]

ipdb> test_count
1
ipdb> TestObject.objects.all()
[]
ipdb> TestObject.objects.all().count()
0

在将值分配给test_count之后但在将另一个对象添加到TestObject

之前,这发生在第二行

当我的同事参加我们的测试时,他的所有通行证都很好。

以前有没有人经历过这种性质的事情?我试图改变变量名称,我想也许某处有冲突。我完全没有想法。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

根据SO帖子,你看到的是TestObject.objects.all()。count() 在连续的调用中返回两个不同的值。

除非有其他东西进入,否则基本上是不可能的 并为你的数据库做一些事情。

或者,您的TestCase子类是否正确调用 super(MyTestCase,self).setUp()和其他超类方法来获取DB 设置正确吗?

马尔科姆

从django-users发布