django测试之间的数据

时间:2016-03-18 00:04:40

标签: python django testing

在django测试成功后删除数据是否正常?我没有谈论每次试运行,让我举个例子:

class MyFooTest(TestCase):
    def test_foo1(self):
        # Some foo test code here

    def test_foo2(self):
        # Some foo test code here

测试test_foo1期间制作的数据在测试test_foo2时不存在,是否正常发生?

1 个答案:

答案 0 :(得分:4)

documentation,底部解释TransactionTestCaseTestCase之间的差异:

  

另一方面,TestCase在测试后不会截断表。相反,它将测试代码包含在数据库事务中,该事务在测试结束时回滚。这可以保证测试结束时的回滚将数据库恢复到初始状态。

由于每个单独的测试方法都包含在atomic块中,并且每个原子块在测试方法结束时回滚,这是预期的行为。 Django这样做是为了确保测试被隔离,以便在发生任何问题时更容易找到。

如果您需要在多个测试方法中保留数据,可以在setUpTestData()中创建它们。只是确保不要更改setUpTestData()创建的内存中对象。内存中的更改将保持不变,但数据库更改将被回滚。