7

我有一堆单元测试文件,所有这些文件都由 django.test.TestCase 类组成。

给自己写了一个小 shell 脚本来取消注释/注释我的 __init__.py 文件中的测试文件导入,所以我可以根据我给它的命令行参数从某些测试文件运行测试。我还能够一次性运行所有测试文件的所有测试(用于回归测试目的)。

我有一个包含一些 JSON 夹具的测试文件,第一个测试检查某个模型/表中是否有 3 条记录(由 JSON 夹具定义)。

所以这就是问题所在:当我自己运行这个测试文件时,它的测试以优异的成绩通过,但是当我用所有其他测试运行测试时,我提到的那个特定的测试用例失败了。

当我运行所有测试时,数据库说表/模型中有 6 条记录,但应该只有 3 条(来自夹具),就像测试文件自己运行时一样。

我还尝试使用其他一些测试文件(不是全部)运行该测试文件并且它通过了。所以唯一没有的时候是所有测试文件都运行时。

对我来说,这似乎是 Django 或 PostgreSQL(我正在使用的 DB)中的一个错误,因为 Django TestCases 不应该在每个测试方法之间自动刷新/重置数据库,更不用说测试类了?

4

1 回答 1

1

这可能是由于 Django 中的 TestCase 和 TransactionTestCase 之间的清理方式不同。在 Django 1.5 之前,TransactionTestCases 需要在 TestCases 之后运行(而 Django 的 testunner 已经为您做到了)。不过,这应该在 1.5 中修复,因此请尝试在那里再次运行测试...

于 2013-07-03T10:28:30.323 回答