Django中的测试:setUpClass、setUpTestData和TestCase类中的setUp有什么区别?

2024-04-27 17:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

TestCase类中,setUpClasssetUpTestDatasetUp之间有什么区别?

更具体地说,每种方法的用例是什么?

到目前为止我明白的是:

设置类

  • 此方法在测试类中的所有测试之前运行一次

设置测试数据

  • 如果数据库支持事务,则此方法运行一次。否则它会在每次测试之前运行。

设置

  • 此方法在测试类中的每个测试之前运行。

根据我上面提到的理解,setUpTestData似乎位于setUpClass和setUp之间。为什么我们需要setuUpTestData的类级方法,而通过setUpClasssetUp或两者的组合可以实现相同的效果?


Tags: 方法数据库setup用例事务testcase测试数据效果
1条回答
网友
1楼 · 发布于 2024-04-27 17:31:10

编辑:阿拉斯达尔评论后更新/更正

设置类

  • setUpClass用于执行类范围的初始化/配置(例如,创建连接、加载webdrivers)。例如,当使用setUpClass打开数据库连接/会话时,可以使用tearDownClass关闭它们。
  • setUpClass在运行任何测试之前为测试用例调用一次。类似地,在所有测试运行之后调用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.setUpClass()调用(src
  • setUpTestData只为TestCase调用一次,如documentation中所述。如果数据库不支持事务,将在每次测试运行之前调用setUpTestData(感谢@Alasdair纠正我的错误)

设置

  • setUp将在每次测试运行之前调用,并应用于为每次测试运行准备测试数据集。

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

相关问题 更多 >