在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
时不存在,是否正常发生?
答案 0 :(得分:4)
从documentation,底部解释TransactionTestCase
和TestCase
之间的差异:
另一方面,TestCase在测试后不会截断表。相反,它将测试代码包含在数据库事务中,该事务在测试结束时回滚。这可以保证测试结束时的回滚将数据库恢复到初始状态。
由于每个单独的测试方法都包含在atomic
块中,并且每个原子块在测试方法结束时回滚,这是预期的行为。 Django这样做是为了确保测试被隔离,以便在发生任何问题时更容易找到。
如果您需要在多个测试方法中保留数据,可以在setUpTestData()
中创建它们。只是确保不要更改setUpTestData()
创建的内存中对象。内存中的更改将保持不变,但数据库更改将被回滚。