Django测试执行顺序和表

时间:2011-08-15 12:13:30

标签: django unit-testing testing

在测试执行并更改测试数据库表的情况下,数据库表是否会在每次测试后返回到原始状态?如果没有,我应该如何知道测试执行的顺序,以便我预测数据库表的状态。例如,

class SimpleTest(Testcase):
    def test_insert(self):
        # testing to see if data correctly added to database

    def test_other_thing(self):
        # does insered data available here?

2 个答案:

答案 0 :(得分:2)

数据库在每次测试结束时回滚。

答案 1 :(得分:2)

为了正确的测试隔离,当测试触摸数据库时,您需要继承django.test.TestCase,它处理一次测试执行与另一次测试执行之间的数据库状态隔离。

永远不要依赖于测试执行顺序:如果需要,你做错了,因为你违反了测试隔离。

请记住,您不需要仅使用unittest.TestCase或仅使用django.test.TestCase:您可以根据需要混合它们(如果您的测试没有触及数据库,则不需要后者)。

请注意,django.test.TestCase在每次测试后都使用事务来加速数据库状态清理,因此如果您需要实际测试数据库事务,则需要使用django.test.TransactionTestCase(请参阅https://docs.djangoproject.com/en/dev/topics/testing/#testcase)< / p>