返回: Pytest权威教程

经典xUnit风格的setup/teardown

本节介绍了如何在每个模块/类/函数的基础上实现Fixture(setup和teardown测试状态)的经典而流行的方法。

注意

虽然这些setup/teardown方法对于来自aunittest或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/teardown

类似地,在调用类的所有测试用例之前和之后,在类级别调用以下方法:

@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机制集成在一起,并遵守调用中涉及的Fixture方法的适当范围规则。

Pytest权威教程16-经典xUnit风格的setup/teardown的更多相关文章

  1. Pytest权威教程(官方教程翻译)

    Pytest权威教程01-安装及入门 Pytest权威教程02-Pytest 使用及调用方法 Pytest权威教程03-原有TestSuite的执行方法 Pytest权威教程04-断言的编写和报告 P ...

  2. Pytest权威教程05-Pytest fixtures:清晰 模块化 易扩展

    目录 Pytest fixtures:清晰 模块化 易扩展 Fixtures作为函数参数使用 Fixtures: 依赖注入的主要例子 conftest.py: 共享fixture函数 共享测试数据 生 ...

  3. Pytest权威教程21-API参考-07-配置选项(Configuration Options)

    目录 配置选项(Configuration Options) addopts cache_dir confcutdir console_output_style doctest_encoding do ...

  4. Pytest权威教程02-Pytest 使用及调用方法

    目录 Pytest 使用及调用方法 使用python -m pytest调用pytest 可能出现的执行退出code 获取版本路径.命令行选项及环境变量相关帮助 第1(N)次失败后停止测试 指定及选择 ...

  5. Pytest权威教程14-缓存:使用跨执行状态

    目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.Tes ...

  6. Pytest权威教程15-运行Nose用例

    目录 运行Nose用例 使用方法 支持的nose风格 不支持的习语/已知问题 返回: Pytest权威教程 运行Nose用例 Pytest基本支持运行Nose框架格式的测试用例. 使用方法 后安装py ...

  7. Pytest权威教程19-编写钩子(Hooks)方法函数

    目录 编写钩子(Hooks)函数 钩子函数验证和执行 firstresult: 遇到第一个有效(非None)结果返回 hookwrapper:在其他钩子函数周围执行 钩子(Hooks)函数排序/调用示 ...

  8. Pytest权威教程25-配置

    目录 配置 命令行选项和配置文件设置 初始化:确定ROOTDIR和INIFILE 寻找rootdir 如何更改命令行选项默认值 内置的配置文件选项 返回: Pytest权威教程 配置 命令行选项和配置 ...

  9. Pytest权威教程24-Pytest导入机制及系统路径

    目录 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 独立测试模块及conftest.py文件 调用通过python -m pytest调用p ...

随机推荐

  1. 文件流CopyTo

  2. MySQL数据库连接报错

    数据库版本8.x和其他版本配置有区别: 1. 驱动依赖和连接 报错: Could not create connection to database server - java mysql conne ...

  3. JAVA日期格式化yyyyMMddHHmmssSSS

    String nowtime = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());

  4. python 操作excel实现替换特定内容

    本文介绍使用python语言,借助openyxl库来实现操作excel(xlsx)文件,实现替换特定内容的需求. 目前实现了3个小功能: 1. 全字匹配替换(mode1):(如:全字匹配 yocich ...

  5. 过滤器+用session验证是否登陆过

    过滤器: public class MyActionFilter : ActionFilterAttribute//继承ActionFilterAttribute类 { public override ...

  6. 「8-27

    没有别的目的, 是最近发现一个小软件, 用起来感觉很不错, 所以想分享给大家. 首先这是一个 macOS 软件, 它的功能也很简单, 就是在菜单栏显示日期时间, 点按它可以显示日历, 没错, 简单到是 ...

  7. 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇

    使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...

  8. 漫谈五种IO模型(主讲IO多路复用)

    首先引用levin的回答让我们理清楚五种IO模型 1.阻塞I/O模型 老李去火车站买票,排队三天买到一张退票. 耗费:在车站吃喝拉撒睡 3天,其他事一件没干. 2.非阻塞I/O模型 老李去火车站买票, ...

  9. java.lang.NoClassDefFoundError: org/apache/zookeeper/proto/SetWatches

    Session 0x16b21fa441900b6 for server 192.168.240.126/192.168.240.126:2181, unexpected error, closing ...

  10. 为什么引入Memcached?

    刚memcached了解学习,一直是处于一个懵懂的状态,先是对memcached进行了一个了解,但我们为什么要在ITOO中引入memcached呢?当问我的时候当时自己脑子中打了一个大大的 这就必须去 ...