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

到目前为止,我所理解的是:

setUpClass

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

setUpTestData

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

setUp

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

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

推荐答案

编辑:阿拉斯代尔 comments 后更新/更正

设置Class

  • 设置Class用于执行类范围的初始化/配置(例如创建连接、加载WebDriver).例如,当使用设置Class打开数据库连接/会话时,可以使用tearDownClass关闭它们.
  • 在运行任何测试之前,为TestCase调用设置Class一次.类似地,在所有测试运行之后调用tearDownClass.

文档中的注释:

SimpleTestCase及其子类(例如TestCase,.)依靠设置Class()和tearDownClass()执行一些类范围的初始化(例如覆盖设置).如果需要覆盖这些方法,不要忘记调用超级实现:

设置TestData

  • 设置TestData用于 for each 测试用例创建初始测试数据.这个方法由TestCase调用.设置Class()(src)
  • 设置TestData为TestCase调用一次,如documentation中所述.如果数据库不支持事务,在每次测试运行之前都会调用设置TestData(感谢@alasdair纠正了我的错误)

设置

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

使用设置TestData可以提高测试性能,请注意,测试中对该数据的更改将在不同的测试运行之间持续.如果需要重新加载,可以通过设置方法进行.

Django相关问答推荐

使用序列化器获取Django ORM auth_user. id数据

在模板中自动添加变量

Django没有显示变量

注册新用户时,对象没有属性';is_active';错误:';NoneType';对象没有属性

社工/社工简戈

通过 B 的外键列表访问模型 B 的行

django.template.response.ContentNotRenderedError: 必须渲染响应内容才能迭代

root urls.py 是 Django 中的 config/urls.py 吗?

如何根据查询集中的条件返回多个聚合?

Django 1.9 中 django.db.models.loading.get_model() 的类似功能是什么?

带有 Django 和 Python 的 Atlassian Bamboo - 可能吗?

django:manytomanyfield 和 through 如何出现在 admin 中?

Django 和 VirtualEnv 开发/部署最佳实践

django 在 unittest 测试中设置环境变量

Django urls 直接到 html 模板

django 静态文件版本控制

响应发送到客户端后在 Django 中执行代码

如何测试 Django QuerySets 是否相等?

1 个 django 应用程序中约有 20 个模型

django-getlist()