- Pytest:帮助您编写更好的程序
- 完整的 Pytest 文档
- 安装和入门
- 使用和调用
- 在现有测试套件中使用 pytest
- 测试中断言的编写和报告
- Pytest 夹具:显式、模块化、可扩展
- 用属性标记测试函数
- MonkeyPatching / Mocking 模块和环境
- 临时目录和文件
- 捕获 stdout/stderr 输出
- 捕获警告
- 模块和测试文件的 Doctest 集成
- 跳过和 xfail:处理无法成功的测试
- 参数化夹具和测试功能
- 缓存:使用交叉测试运行状态
- UnitTest.TestCase 支持
- 运行为鼻子编写的测试
- 经典的 Xunit 风格设置
- 安装和使用插件
- 编写插件
- 登录
- 良好的集成实践
- 古怪的测试
- Pytest 导入机制和 sys.path/PYTHONPATH
- 设置 bash 完成
- API 引用
- _pytest.hookspec
- _pytest.python_api
- _pytest.outcomes
- _pytest.config
- _pytest.mark
- _pytest.recwarn
- _pytest.assertion
- _pytest.freeze_support
- _pytest.fixtures
- _pytest.cacheprovider
- _pytest.capture
- _pytest.doctest
- _pytest.junitxml
- _pytest.logging
- _pytest.monkeypatch
- _pytest.pytester
- _pytest.tmpdir
- _pytest.python
- _pytest.nodes
- _pytest.reports
- _pytest._code.code
- _pytest.config.argparsing
- _pytest.main
- pluggy.callers
- _pytest.config.exceptions
- py.test 2.0.0:断言++、UnitTest++、Reporting++、Config++、Docs++
- 示例和自定义技巧
- 配置
- 贡献开始
- 向后兼容策略
- Python 2.7 和 3.4 支持
- 企业版 pytest
- 项目实例
- 历史笔记
- 弃用和移除
- 发展指南
- 演讲和辅导
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
经典的 Xunit 风格设置
本节描述了一种经典的和流行的方法,即如何在每个模块/类/函数的基础上实现fixture(设置和拆卸测试状态)。
注解
虽然这些设置/拆卸方法对于来自 unittest
或 nose
背景,您也可以考虑使用pytest的更强大的 fixture mechanism 它利用依赖注入的概念,允许使用更模块化和更可扩展的方法来管理测试状态,尤其是对于大型项目和功能测试。您可以在同一个文件中混合两种夹具机构,但测试方法是 unittest.TestCase
子类不能接收fixture参数。
模块级设置/拆卸
如果在单个模块中有多个测试函数和测试类,则可以选择实现以下fixture方法,这些方法通常对所有函数调用一次:
def setup_module(module): """ setup any state specific to the execution of the given module.""" def teardown_module(module): """teardown any state that was previously setup with a setup_module method. """
从Pytest-3.0开始, module
参数是可选的。
类设置/拆卸
类似地,在调用类的所有测试方法之前和之后,在类级别调用以下方法:
@classmethod def setup_class(cls): """setup any state specific to the execution of the given class (which usually contains tests). """ @classmethod def teardown_class(cls): """teardown any state that was previously setup with a call to setup_class. """
方法和功能级别设置/拆卸
类似地,在每个方法调用周围调用以下方法:
def setup_method(self, method): """setup any state tied to the execution of the given method in a class. setup_method is invoked for every test method of a class. """ def teardown_method(self, method): """teardown any state that was previously setup with a setup_method call. """
从Pytest-3.0开始, method
参数是可选的。
如果您希望直接在模块级定义测试函数,您还可以使用以下函数来实现fixture:
def setup_function(function): """setup any state tied to the execution of the given function. Invoked for every test function in the module. """ def teardown_function(function): """teardown any state that was previously setup with a setup_function call. """
从Pytest-3.0开始, function
参数是可选的。
评论:
每个测试过程可以多次调用设置/拆卸对。
如果相应的设置函数存在并且失败/被跳过,则不会调用拆卸函数。
在Pytest-4.2之前,Xunit样式的函数不遵守fixture的作用域规则,因此,例如
setup_method
在会话范围的autouse fixture之前调用。现在,Xunit样式的函数与fixture机制集成在一起,并遵守调用中涉及的fixture的适当范围规则。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论