Pytest官方教程-17-经典xUnit风格的setup/te
2019-04-26 本文已影响14人
韩志超
目录:
- 安装及入门
- 使用和调用方法
- 原有TestSuite使用方法
- 断言的编写和报告
- Pytest fixtures:清晰 模块化 易扩展
- 使用Marks标记测试用例
- Monkeypatching/对模块和环境进行Mock
- 使用tmp目录和文件
- 捕获stdout及stderr输出
- 捕获警告信息
- 模块及测试文件中集成doctest测试
- skip及xfail: 处理不能成功的测试用例
- Fixture方法及测试用例的参数化
- 缓存: 使用跨执行状态
- unittest.TestCase支持
- 运行Nose用例
- 经典xUnit风格的setup/teardown
- 安装和使用插件
- 插件编写
- 编写钩子(hook)方法
- 运行日志
- API参考
- 优质集成实践
- 片状测试
- Pytest导入机制及sys.path/PYTHONPATH
- 配置选项
- 示例及自定义技巧
- Bash自动补全设置
经典xUnit风格的setup/teardown
本节介绍了如何在每个模块/类/功能的基础上实现Fixture(setup和teardown测试状态)的经典而流行的方法。
注意
虽然这些setup/teardown方法对于来自a unittest
或nose的人来说简单且熟悉,但background
你也可以考虑使用pytest更强大的Fixture机制,该机制利用依赖注入的概念,允许更模块化和更可扩展的方法来管理测试状态,特别是对于大型项目和功能测试。你可以在同一文件中混合两种Fixture机制,但unittest.TestCase
子类的测试方法不能接收Fixture参数。
模块级别setup/teardown
如果在单个模块中有多个测试函数和测试类,则可以选择实现以下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
参数是可选的。
班级setup/拆解
类似地,在调用类的所有测试方法之前和之后,在类级别调用以下方法:
@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.
"""
方法和功能级别setup/teardown
同样,围绕每个方法调用调用以下方法:
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
参数是可选的。
备注:
-
每个测试过程可以多次调用setup / teardown对。
-
如果存在相应的setup功能并且跳过了失败/,则不会调用teardown功能。
-
在pytest-4.2之前,xunit样式的函数不遵守fixture的范围规则,因此例如
setup_method
可以在会话范围的autouse fixture之前调用a。现在,xunit风格的功能与Fixture机制集成在一起,并遵守调用中涉及的灯具的适当范围规则。