完整的 pytest 文档¶
完整的 pytest 文档¶
下载最新版本为 PDF
从这里开始¶
开始
安装 pytest
创建您的第一个测试
运行多个测试
断言引发了某个异常
将多个测试分组到一个类中
为功能测试请求一个唯一的临时目录
继续阅读
操作指南¶
如何调用 pytest
指定要运行哪些测试
获取有关版本、选项名称、环境变量的帮助
测试执行持续时间分析
管理插件的加载
调用 pytest 的其他方式
如何在测试中编写和报告断言
使用 assert 语句进行断言
关于预期异常的断言
关于预期警告的断言
利用上下文相关比较
为失败的断言定义您自己的解释
断言内省详细信息
如何使用夹具
“请求”夹具
自动使用夹具(您不必请求的夹具)
范围:在类、模块、包或会话之间共享夹具
拆除/清理(又称夹具完成)
安全拆除
安全地运行多个 assert 语句
夹具可以内省请求的测试上下文
使用标记将数据传递给夹具
工厂作为夹具
参数化夹具
使用带有参数化夹具的标记
模块化:使用夹具函数中的夹具
按夹具实例自动分组测试
在类和模块中使用 usefixtures 夹具
在不同级别上覆盖夹具
使用来自其他项目的夹具
如何用属性标记测试函数
注册标记
引发未知标记的错误
如何参数化夹具和测试函数
@pytest.mark.parametrize:参数化测试函数
基本的 pytest_generate_tests 示例
更多示例
如何在测试中使用临时目录和文件
tmp_path 夹具
tmp_path_factory 夹具
tmpdir 和 tmpdir_factory 夹具
临时目录位置和保留
如何修补/模拟模块和环境
修补函数
修补返回的对象:构建模拟类
全局修补示例:防止“请求”进行远程操作
修补环境变量
修补字典
API 参考
如何运行 doctest
编码
使用“doctest”选项
在失败时继续
输出格式
pytest 特有功能
替代方案
如何重新运行失败的测试并在测试运行之间保持状态
用法
仅重新运行失败或首先重新运行失败
上次运行中没有测试失败时的行为
新的 config.cache 对象
检查缓存内容
清除缓存内容
逐步
如何管理日志记录
caplog 固定装置
实时日志
自定义颜色
发行说明
pytest 3.4 中的不兼容更改
如何捕获 stdout/stderr 输出
默认 stdout/stderr/stdin 捕获行为
设置捕获方法或禁用捕获
使用 print 语句进行调试
从测试函数访问捕获的输出
如何捕获警告
控制警告
@pytest.mark.filterwarnings
禁用警告摘要
完全禁用警告捕获
DeprecationWarning 和 PendingDeprecationWarning
确保代码触发弃用警告
使用 warns 函数断言警告
记录警告
在测试中警告的其他用例
自定义失败消息
内部 pytest 警告
资源警告
如何使用 skip 和 xfail 处理无法成功的测试
跳过测试函数
XFail:将测试函数标记为预期失败
使用参数化跳过/xfail
如何安装和使用插件
在测试模块或 conftest 文件中要求/加载插件
找出哪些插件处于活动状态
按名称停用/取消注册插件
编写插件
工具启动时的插件发现顺序
conftest.py:每个目录的本地插件
编写自己的插件
让其他人可以安装你的插件
断言重写
在测试模块或 conftest 文件中要求/加载插件
按名称访问另一个插件
注册自定义标记
测试插件
编写挂钩函数
挂钩函数验证和执行
firstresult:在第一个非 None 结果处停止
挂钩包装器:在其他挂钩周围执行
挂钩函数排序/调用示例
声明新挂钩
在 pytest_addoption 中使用挂钩
选择性地使用来自第三方插件的挂钩
在挂钩函数中跨项目存储数据
如何将 pytest 与现有的测试套件一起使用
使用 pytest 运行现有的测试套件
如何在 pytest 中使用基于 unittest 的测试
开箱即用的优点
pytest 特性在 unittest.TestCase 子类中
使用标记将 pytest 固定装置混合到 unittest.TestCase 子类中
使用 autouse 固定装置和访问其他固定装置
如何实现 xunit 风格的设置
模块级设置/拆除
类级设置/拆除
方法和函数级设置/拆除
如何设置 bash 补全
参考指南¶
固定装置参考
内置固定装置
固定装置可用性
固定装置实例化顺序
Pytest 插件列表
配置
命令行选项和配置文件设置
配置文件格式
初始化:确定 rootdir 和 configfile
内置配置文件选项
语法高亮主题自定义
API 参考
常量
函数
标记
固定装置
钩子
集合树对象
对象
全局变量
环境变量
异常
警告
配置选项
命令行标志
说明¶
测试的剖析
关于夹具
夹具是什么
对 xUnit 风格的设置/拆除函数的改进
夹具错误
共享测试数据
关于夹具清理的说明
良好的集成实践
使用 pip 安装包
Python 测试发现的约定
选择测试布局
tox
不要通过 setuptools 运行
使用 flake8-pytest-style 检查
不稳定的测试
不稳定的测试为何是一个问题
潜在的根本原因
Pytest 特性
其他一般策略
研究
资源
pytest 导入机制和 sys.path/PYTHONPATH
导入模式
prepend 和 append 导入模式场景
调用 pytest 与 python -m pytest
更多主题¶
示例和自定义技巧
使用 pytest 演示 Python 失败报告
基本模式和示例
参数化测试
使用自定义标记
可以查看所有收集的测试的会话夹具
更改标准(Python)测试发现
使用非 Python 测试
使用自定义目录收集器
向后兼容性政策
历史
主要关注平稳过渡 - 立场(6.0 之前)
Python 版本支持
弃用和删除
弃用特性
已删除特性和重大更改
贡献入门
功能请求和反馈
报告错误
修复错误
实现特性
编写文档
向 pytest-dev 提交插件
准备拉取请求
加入开发团队
为下一个补丁版本回传错误修复
处理过时的 issue/PR
关闭 issue
开发指南
赞助商
OpenCollective
企业版 pytest
许可证
联系渠道
历史
历史笔记
标记改造和迭代
cache 插件集成到核心
funcargs 和 pytest_funcarg__
@pytest.yield_fixture 装饰器
[pytest] 在 setup.cfg 中的标题
将标记应用于 @pytest.mark.parametrize 参数
@pytest.mark.parametrize 参数名称作为元组
setup:现在是一个“自动使用夹具”
条件作为字符串而不是布尔值
pytest.set_trace()
“compat”属性
演讲和教程
书籍
演讲和博客文章
发布公告