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