《pytest测试实战》
内容简介
pytest是动态编程语言Python专用的测试框架,它具有易于上手、功能强大、第三方插件丰富、效率高、可扩展性好、兼容性强等特点。《pytest测试实战》深入浅出地讲解了pytest的使用方法,尤其是具有特色的fixture的用法。作者通过丰富的测试实例,手把手教读者编写简洁、易于维护的测试代码和插件,让你轻松掌握这个业界最受欢迎的Python测试工具。
第1章介绍pytest的安装,同时会介绍Tasks项目的数据结构部分(名为Task的namedtuple),并用它作为测试示例。我们会学习如何指定测试文件运行,以及pytest常用的命令行命令,包括重新运行失败测试、遇到失败即停止所有测试、控制堆栈跟踪、控制日志输出,等等。
第2章将使用pip在本地安装Tasks项目,学习在Python项目中如何组织测试目录,这样才能针对实际项目编写测试用例。这一章的所有示例都依赖外部程序,包括数据库写入。
第2章的重点是测试函数,你将学习在pytest中高效使用断言语句。这一章还会讲解marker标记功能的用法,marker标记可以将测试进行归类或分组,方便一起运行,也可以将某些测试标记为skip(跳过不执行),marker标记还可以告诉pytest我们知道某些测试是一定会失败的。如果希望运行指定的测试子集,除了使用marker,还可以将测试代码组织成测试目录、测试模块、测试类,然后运行。
并非所有的测试代码都要放到测试函数中。第3章介绍如何将测试数据、启动逻辑、销毁逻辑放入fixture(pytest定义的一种测试脚手架)。设置系统(或子系统、系统单元)是软件测试的重要环节,第3章将介绍用一个简单的fixture完成这方面的工作(包括对数据库进行初始化,写入数据以备测试之用)。Fixture模块的功能非常强大,你可以利用它简化测试代码,从而提高代码的可读性和可维护性。Fixture像测试函数一样,也有参数。利用参数,你只需要编写一份代码,就可以针对TinyDB和MongoDB(或其他Tasks项目支持的数据库)开展测试。
第4章介绍pytest内置的fixture以满足测试中常见的一些需求,包括生成和销毁临时目录、截取输出流(通过日志判定结果)、使用monkey patch、检查是否发出警告,等等。
第5章讲解如何在pytest中添加命令行选项,如何改进打印输出,如何打包分发自己编写的插件,如何共享定制化的pytest(包括fixture)。这一章开发的插件可以改善Tasks项目测试失败时的输出呈现方式。你还将学习测试自己的测试插件(元测试)。读完这一章,想必你已经等不及编写自己的插件了。附录C收集了一些热门的社区插件,可供参考。
第6章讲解通过pytest.ini文件修改默认配置,自定义pytest的运行方式。pytest.ini文件可以存放某些命令选项,从而减少你重复输入命令的次数;利用它还可以指定pytest忽略某些测试目录,或者指定pytest的最低版本,等等。使用tox.ini和setup.cfg文件也可以实现同样的功能。
第7章(最后一章)介绍pytest与其他工具的结合使用。我们将借助tox让Tasks项目在多个Python版本上运行;学习如何测试Tasks项目的CLI部分,而不必mock系统的其余部分;借助coverage.py检查Tasks项目代码块的测试覆盖情况;通过Jenkins发起测试并实时显示结果。最后,还会学习如何让pytest运行基于unittest的测试用例,以及把pytest的fixture共享给unittest的测试用例使用。
作者简介
Brian Okken是一位有二十多年工作经验的软件测试工程师,他业余时间录制了Test & Code和Python Bytes两个播客。
目录
前言
第1章 pytest入门 1
1.1 资源获取 4
1.2 运行Pytest 5
1.3 运行单个测试用例 10
1.4 使用命令行选项 10
–collect-only选项 11
-k选项 11
-m选项 12
-x选项 13
–maxfail=num 15
-s与–capture=method 16
–lf(–last-failed)选项 16
–ff(–failed-first)选项 17
-v(–verbose)选项 17
-q(–quiet)选项 18
-l(–showlocals)选项 19
–tb=style选项 20
–duration=N选项 21
–version选项 22
-h(–help)选项 23
1.5 练习 24
1.6 预告 25
第2章 编写测试函数 27
2.1 测试示例程序 27
本地安装Tasks项目程序包 30
2.2 使用assert声明 32
2.3 预期异常 35
2.4 测试函数的标记 36
完善冒烟测试 38
2.5 跳过测试 40
2.6 标记预期会失败的测试 43
2.7 运行测试子集 45
单个目录 45
单个测试文件/模块 46
单个测试函数 47
单个测试类 47
单个测试类中的测试方法 48
用测试名划分测试集合 48
2.8 参数化测试 49
2.9 练习 56
2.10 预告 57
第3章 pytest Fixture 59
3.1 通过conftest.py共享fixture 60
3.2 使用fixture执行配置及销毁逻辑 61
3.3 使用–setup-show回溯fixture的执行过程 63
3.4 使用fixture传递测试数据 64
3.5 使用多个fixture 66
3.6 指定fixture作用范围 68
修改Tasks项目的fixture作用范围 70
3.7 使用usefixtures指定fixture 73
3.8 为常用fixture添加autouse选项 74
3.9 为fixture重命名 75
3.10 Fixture的参数化 77
3.11 参数化Tasks项目中的fixture 80
3.12 练习 83
3.13 预告 83
第4章 内置Fixture 85
4.1 使用tmpdir和tmpdir_factory 86
在其他作用范围内使用临时目录 88
4.2 使用pytestconfig 90
4.3 使用cache 92
4.4 使用capsys 100
4.5 使用monkeypatch 102
4.6 使用doctest_namespace 106
4.7 使用recwarn 109
4.8 练习 110
4.9 预告 111
第5章 插件 113
5.1 寻找插件 114
5.2 安装插件 114
从PyPI安装 114
从PyPI安装指定版本 115
从.tar.gz或.whl文件安装 115
从本地目录安装 115
从Git存储仓库安装 116
5.3 编写自己的插件 116
5.4 创建可安装插件 121
5.5 测试插件 125
5.6 创建发布包 129
通过共享目录分发插件 130
通过PyPI发布插件 130
5.7 练习 131
5.8 预告 131
第6章 配置 133
6.1 理解pytest的配置文件 133
用pytest –help查看ini文件选项 135
插件可以添加ini文件选项 135
6.2 更改默认命令行选项 136
6.3 注册标记来防范拼写错误 136
6.4 指定pytest的最低版本号 138
6.5 指定pytest忽略某些目录 138
6.6 指定测试目录 139
6.7 更改测试搜索的规则 141
6.8 禁用XPASS 142
6.9 避免文件名冲突 143
6.10 练习 145
6.11 预告 145
第7章 pytest与其他工具的搭配使用 147
7.1 pdb:调试失败的测试用例 147
7.2 coverage.py:判断测试覆盖了多少代码 151
7.3 mock:替换部分系统 155
7.4 tox:测试多种配置 162
7.5 Jenkins CI:让测试自动化 166
7.6 unittest:用pytest运行历史遗留测试用例 173
7.7 练习 179
7.8 预告 180
附录A 虚拟环境 181
附录B Pip 183
附录C 常用插件 187
C.1 改变测试流程的插件 187
pytest-repeat:重复运行测试 187
pytest-xdist:并行运行测试 189
pytest-timeout:为测试设置时间限制 190
C.2 改善输出效果的插件 191
pytest-instafail:查看错误的详细信息 191
pytest-sugar:显示色彩和进度条 192
pytest-emoji:为测试增添一些乐趣 193
pytest-html:为测试生成HTML报告 195
C.3 静态分析用的插件 197
pytest-pycodestyle和pytest-pep8:Python代码风格检查 197
pytest-flake8:更多的风格检查 197
C.4 Web开发用的插件 198
pytest-selenium:借助浏览器完成自动化测试 198
pytest-django:测试Django应用 198
pytest-flask:测试Flask应用 199
附录D 打包和发布Python项目 201
D.1 创建可安装的模块 201
D.2 创建可安装的包 203
D.3 创建源码发布包和Wheel文件 205
D.4 创建可以从PyPI安装的包 209
附录E xUnit Fixture 211
E.1 xUnit Fixture的语法 211
E.2 混合使用pytest Fixture和xUnit Fixture 214
E.3 xUnit Fixture的限制 215
索引 216
pytest测试实战 PDF 下载
链接:https://pan.baidu.com/s/1UsgbQRt2orXeR1nw2gm8uw?pwd=r72e
提取码:r72e
复制这段内容后打开百度网盘手机App,操作更方便哦