在 Django 中,如何在测试函数后保留数据库状态?

In Django how can I preserve the database state after a test function?

假设我的测试用例中有 3 个测试函数 Class。 test1 在所有断言语句之前执行 A,test2 执行 AB,test3 执行 ABC。

A、B、C均表示创建了一些数据库。基于Django TestCase的机制,对于每一个测试函数都会创建一个新的数据库。但是,在我的例子中,test3 取决于 test2 的数据状态,而 test2 取决于 test1 的状态。

我有几个问题:

  1. 有没有一种优雅的方法来处理这种测试问题? (我知道fixtures很有用。但是我想维护在之前的测试函数中动态创建的数据)

  2. 我坚信单元测试应该是独立的。 Django中数据库层的关联测试是怎么处理的?

您在这里尝试使用以前的测试用例来编写下一个测试用例。在这种情况下,您可以在 setUp() 函数中定义基本功能。然后在测试用例中相应地使用setUp。在每个测试用例开始时调用 setUp 函数。

大多数情况下,当有依赖的单元测试功能时,您需要先检查您正在测试的代码。代码需要分解成可单元测试的单元。

但可能会有一些例外,在这些情况下,将测试函数组合成一个是最有意义的。因为当你测试一个函数时,你是在测试整个函数的功能,而不是它的一部分。