Pytest官方教程-17-经典xUnit风格的setup/teardown

目录:

  1. 安装及入门
  2. 使用和调用方法
  3. 原有TestSuite使用方法
  4. 断言的编写和报告
  5. Pytest fixtures:清晰 模块化 易扩展
  6. 使用Marks标记测试用例
  7. Monkeypatching/对模块和环境进行Mock
  8. 使用tmp目录和文件
  9. 捕获stdout及stderr输出
  10. 捕获警告信息
  11. 模块及测试文件中集成doctest测试
  12. skip及xfail: 处理不能成功的测试用例
  13. Fixture方法及测试用例的参数化
  14. 缓存: 使用跨执行状态
  15. unittest.TestCase支持
  16. 运行Nose用例
  17. 经典xUnit风格的setup/teardown
  18. 安装和使用插件
  19. 插件编写
  20. 编写钩子(hook)方法
  21. 运行日志
  22. API参考
    1. 方法(Functions)
    2. 标记(Marks)
    3. 钩子(Hooks)
    4. 装置(Fixtures)
    5. 对象(Objects)
    6. 特殊变量(Special Variables)
    7. 环境变量(Environment Variables)
    8. 配置选项(Configuration Options)
  23. 优质集成实践
  24. 片状测试
  25. Pytest导入机制及sys.path/PYTHONPATH
  26. 配置选项
  27. 示例及自定义技巧
  28. 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机制集成在一起,并遵守调用中涉及的灯具的适当范围规则。

你可能感兴趣的:(Pytest官方教程-17-经典xUnit风格的setup/teardown)