测试之间的 Django 数据

Rod*_*nte 2 python testing django

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

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

    def test_foo2(self):
        # Some foo test code here
Run Code Online (Sandbox Code Playgroud)

测试test_foo1时生成的数据在测试时不存在test_foo2,出现这种情况是否正常?

knb*_*nbk 6

文档中,底部解释了TransactionTestCase和之间的区别TestCase

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

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

如果您需要数据在多个测试方法中持久化,您可以在setUpTestData(). 只要确保不要更改由setUpTestData(). 内存中的更改将持续存在,但数据库更改将回滚。

  • 如果我们想从测试中发布并使用以下测试用例中的 get 访问它怎么办?随着回滚的发生,这是不可能的。 (2认同)