【问题标题】:In Django how can I preserve the database state after a test function?在 Django 中,如何在测试功能后保留数据库状态?
【发布时间】:2015-10-27 22:15:07
【问题描述】:

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

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

我有几个问题:

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

  2. 我坚信单元测试应该是独立的。 Django中数据库层的相互关系测试如何处理?

【问题讨论】:

    标签: django django-testing


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我知道接下来该做什么了。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2011-06-04
      • 2015-08-10
      • 1970-01-01
      • 2019-10-04
      • 2021-11-11
      • 2011-04-04
      • 2018-08-17
      • 1970-01-01
      相关资源
      最近更新 更多