setUpClass、setUpTestData 和 setUp in TestCase class 有什么区别?

What are the differences between setUpClass, setUpTestData and setUp in TestCase class?

更具体地说,每个的用例是什么?

到目前为止我所了解的内容:

设置类

设置测试数据

设置

从我上面提到的理解来看,setUpTestData似乎位于setUpClass和setUp之间的区域。为什么我们需要 setuUpTestData 的 class 级别方法,而同样的效果可以通过 setUpClasssetUp 或两者的组合来实现?

编辑:Update/Correction 在 Alasdair 的评论之后

设置类

  • setUpClass 用于执行 class-wide initialization/configuration(例如创建连接、加载网络驱动程序)。例如,当使用 setUpClass 打开数据库 connection/session 时,您可以使用 tearDownClass 关闭它们。
  • setUpClass 在 运行 任何测试之前为 TestCase 调用一次。类似地,在所有测试具有 运行.
  • 之后调用 tearDownClass

文档注释:

SimpleTestCase and its subclasses (e.g. TestCase, ...) rely on setUpClass() and tearDownClass() to perform some class-wide initialization (e.g. overriding settings). If you need to override those methods, don’t forget to call the super implementation:

设置测试数据

  • setUpTestData 用于为每个 TestCase 创建初始测试数据。此方法由 TestCase.setUpClass() (src)
  • 调用
  • setUpTestData 为 TestCase 调用一次,如 documentation 中所述。如果数据库不支持事务,setUpTestData 将在每次测试前调用 运行(感谢@Alasdair 纠正我)

设置

  • setUp 将在每个测试 运行 之前调用,并且应该用于为每个测试 运行.
  • 准备测试数据集

使用 setUpTestData 可以提高测试性能,请注意,测试中对此数据的更改将在不同的测试 运行 之间持续存在。如果需要重新加载,可以通过 setUp 方法完成。 如果用于 运行ning 测试的数据库不支持事务,则性能改进将被否定(因为 setUpTestData 将在每次测试 运行 之前调用)