封面
版权信息
作者简介
前言PREFACE
第1章 pytest框架介绍
1.1 pytest框架引入
1.1.1 测试框架能为我们解决什么问题
1.1.2 测试框架的分类
1.1.3 什么是pytest
1.2 技术前提要求
1.2.1 技术前提
1.2.2 适合人群
1.3 环境准备及资料准备
1.3.1 Python的环境验证
1.3.2 安装pytest
1.4 pytest初体验
1.4.1 在终端建立测试方法及执行过程
1.4.2 在PyCharm建立测试方法及执行过程
1.4.3 pytest的框架结构
1.4.4 在PyCharm中配置运行工具
1.4.5 右击以pytest方式执行代码
1.4.6 去掉main方法执行测试
1.4.7 PyCharm中执行某个测试方法
1.4.8 运行窗口的工具栏含义
1.5 执行的查找原则和测试类及测试方法的命名
1.6 本章小结
第2章 pytest的测试用例管理及运行管理
2.1 测试用例的命名管理
2.2 用例执行顺序
2.3 测试用例的断言管理
2.3.1 什么是断言
2.3.2 断言的时机
2.3.3 断言的分类与使用
2.3.4 触发一个指定异常的断言
2.3.5 为失败断言添加自定义的说明
2.3.6 Assert各种类型断言
2.4 测试用例的运行管理
2.4.1 获取帮助信息
2.4.2 最常用运行测试用例方式
2.4.3 通过python -m pytest调用pytest
2.4.4 在Python代码中调用pytest
2.4.5 pytest执行结束时返回的状态码
2.4.6 输出代码中的控制台信息
2.4.7 显示详细信息
2.4.8 不显示详细信息
2.4.9 显示简单总结结果
2.4.10 执行指定的测试用例
2.4.11 执行指定目录下所有的测试用例
2.4.12 -k参数执行包含特定关键字的测试用例
2.4.13 执行指定nodeid的测试用例
2.4.14 -m参数执行指定标记的用例
2.4.15 执行指定包中的测试用例
2.4.16 修改回溯信息的输出模式
2.5 运行的失败管理
2.5.1 最多允许失败的测试用例数
2.5.2 失败运行管理的原理
2.6 跳过skip测试用例的执行
2.6.1 @pytest.mark.skip装饰器
2.6.2 pytest.skip方法
2.6.3 @pytest.mark.skipif装饰器
2.6.4 pytest.importorskip方法
2.6.5 跳过测试类
2.6.6 跳过测试模块
2.6.7 跳过指定文件或目录
2.6.8 各种跳过小结
2.7 标记用例为预期失败
2.7.1 @pytest.mark.xfail标记用例
2.7.2 使用pytest.xfail标记用例
2.7.3 xfail标记如何失效
2.8 中断调试及错误处理
2.8.1 失败时加载PDB环境
2.8.2 开始执行时就加载PDB环境
2.8.3 设置断点
2.8.4 使用内置的中断函数
2.8.5 错误句柄
2.9 结果分析及报告
2.9.1 分析测试执行时间
2.9.2 创建及定制JUnitXML格式的测试报告
2.10 不稳定测试用例处理
2.10.1 为什么不稳定测试是个问题
2.10.2 潜在的根本原因是什么
2.10.3 pytest为我们提供的解决策略
2.10.4 pytest_CURRENT_TEST
2.10.5 可以重新运行的插件
2.10.6 测试人员采用的解决策略
2.11 本章小结
第3章 pytest中最闪亮的fixture功能
3.1 fixture介绍
3.2 fixture目标
3.3 fixture基本的依赖注入功能
3.4 fixture应用在初始化设置
3.5 fixture应用在配置销毁
3.5.1 使用yield代替return
3.5.2 使用with写法
3.5.3 使用addfinalizer方法
3.5.4 yield与addfinalizer的区别
3.6 fixture方法源码详细讲解
3.7 不同层级scope使用fixture实例
3.7.1 模块(module)级别使用fixture实例
3.7.2 类(class)级别使用fixture实例
3.7.3 会话(session)级别使用fixture与conftest.py配合
3.7.4 session级别实例
3.8 使用params传递不同数据
3.8.1 测试方法使用两个简单测试数据
3.8.2 二(多)个测试方法共用两个简单测试数据
3.8.3 有效测试数据与预期失败xfail的测试数据
3.8.4 params与ids的应用
3.8.5 params综合实例
3.9 自动调用fixture
3.9.1 使用fixture中参数autouse=True实现
3.9.2 使用@pytest.mark.usefixtures
3.9.3 数据库自动应用的实例
3.10 第三方插件通过文件夹共享测试数据
3.11 fixture的并列与嵌套调用
3.11.1 并列使用fixture
3.11.2 嵌套调用fixture
3.11.3 多个fixture的实例化顺序
3.11.4 fixture返回工厂函数
3.11.5 高效地利用fixture实例
3.12 在不同的层级上重写fixture
3.12.1 在文件夹(conftest.py)层级重写fixture
3.12.2 在模块层级重写fixture
3.12.3 在用例参数中重写fixture
3.12.4 参数化的fixture可重写非参数化的fixture,反之亦然
3.13 本章小结
第4章 pytest的数据驱动和参数传递
4.1 参数化介绍
4.2 参数化的应用
4.2.1 单一参数化应用
4.2.2 多参数应用
4.2.3 多个参数化
4.2.4 参数化与fixture的结合
4.2.5 pytestmark实现参数化
4.3 parametrize源码详细讲解
4.4 argnames参数
4.4.1 argnames与测试方法中的参数关系
4.4.2 argnames调用覆盖同名的fixture
4.5 argvalues参数
4.5.1 argvalues来源于Excel文件
4.5.2 使用pytest.param为argvalues赋值
4.6 indirect参数
4.7 ids参数
4.7.1 ids的长度
4.7.2 ids相同
4.7.3 ids中使用中文
4.7.4 通过函数生成ids
4.7.5 ids的覆盖
4.7.6 ids的作用
4.8 scope参数
4.8.1 module级别
4.8.2 未指定scope
4.9 pytest_generate_tests钩子方法
4.10 本章小结
第5章 pytest的相关插件及插件管理
5.1 pytest的插件安装
5.2 常见插件介绍
5.3 常用插件的使用
5.3.1 pytest-assume断言报错后依然执行
5.3.2 pytest-cov测试覆盖率
5.3.3 pytest-freezegun冰冻时间
5.3.4 pytest-flakes静态代码检查
5.3.5 pytest-html生成HTML报告
5.3.6 pytest-httpserver模拟HTTP服务
5.3.7 pytest-instafail用于用例失败时立刻显示错误信息
5.3.8 pytest-mock模拟未实现的部分
5.3.9 pytest-ordering调整执行顺序
5.3.10 pytest-pep8自动检测代码规范
5.3.11 pytest-picked运行未提交git的用例
5.3.12 pytest-rerunfailures失败重试
5.3.13 pytest-repeat重复运行测试
5.3.14 pytest-random-order随机顺序执行
5.3.15 pytest-sugar显示彩色进度条
5.3.16 pytest-selenium浏览器兼容性测试
5.3.17 pytest-timeout设置超时时间
5.3.18 pytest-xdist测试并发执行
5.4 插件管理
5.4.1 在测试模块或conftest文件中加载插件
5.4.2 找出哪些插件处于活动状态
5.4.3 通过名称停用/注销插件
5.5 本章小结
第6章 与Allure框架结合定制测试报告
6.1 Allure框架介绍
6.2 Allure如何生成测试报告
6.3 Allure报告组成
6.3.1 总览
6.3.2 类别
6.3.3 测试套件
6.3.4 功能
6.3.5 图形
6.3.6 时间轴
6.3.7 包
6.4 Allure的初体验
6.4.1 Allure在Windows系统下安装
6.4.2 Allure在Linux环境下安装
6.4.3 Allure在Mac OS系统下安装
6.4.4 Allure的简单用法
6.4.5 Allure的帮助说明
6.5 定制测试报告
6.5.1 定制详细的步骤说明
6.5.2 不同类型的附件补充测试说明
6.5.3 定制各种类型内容描述
6.5.4 定制测试标题
6.5.5 各种链接
6.5.6 自定义各种标签
6.5.7 严重性标记
6.5.8 重试信息展示
6.6 本章小结
第7章 单元自动化测试实践
7.1 什么是单元测试
7.2 pytest测试框架是单元测试的框架
7.3 单元测试与质量
7.4 单元测试一个函数
7.5 单元测试一个类
7.5.1 类的说明
7.5.2 开发的调用
7.5.3 类持续开发:功能的增加及修改
7.5.4 类的单元测试
7.6 本章小结
第8章 API自动化测试实践
8.1 测试微信公众号接口
8.1.1 熟悉接口文档以便获取信息
8.1.2 接口测试用例设计
8.2 执行测试
8.2.1 使用get()、post()方法发送请求,返回响应
8.2.2 使用conftest共享数据
8.2.3 读取yaml数据文件进行parametrize
8.2.4 关联接口数据传递及更新删除接口测试
8.2.5 fixture的依赖接口需要测试,也需要参数化
8.3 使用Allure定制报告
8.4 使用pytest进行各种执行
8.5 本章小结
第9章 Web自动化测试持续集成实践
9.1 Web自动化测试及持续集成源起
9.2 被测试系统的安装和介绍
9.2.1 人力资源管理系统安装
9.2.2 人力资源管理系统介绍
9.3 Web项目自动化原理及Web测试框架
9.3.1 自动化测试要达到的目标和涉及的技术
9.3.2 Web自动化测试框架Selenium介绍
9.3.3 Selenium框架技术简述
9.4 整合Web自动化测试框架
9.4.1 自动化测试准备
9.4.2 创建工程目录
9.4.3 页面元素定位
9.4.4 页面元素操作
9.4.5 提高代码的复用性和灵活性——封装
9.4.6 编写测试用例
9.4.7 测试执行
9.4.8 生成Allure报告
9.5 Web自动化测试本地环境持续集成
9.5.1 Jenkins 2实现自动化执行测试及持续集成流程
9.5.2 使用自由风格配置Python自动化测试
9.5.3 使用pipeline配置Python自动化测试
9.5.4 使用BlueOcean配置Python自动化测试
9.6 本章小结
第10章 App自动化测试项目实践
10.1 App自动化测试框架选择
10.2 App自动化测试环境的搭建
10.2.1 安装和验证Java JDK——Windows系统
10.2.2 安装和验证Node.js
10.2.3 安装AndroidSDK
10.2.4 安装模拟器或连接真机
10.2.5 安装appium-desktop
10.2.6 安装appium-client
10.2.7 appium-doctor环境检查
10.3 使用pytest和Allure建立App自动化混合框架
10.3.1 安装所需要的包和插件
10.3.2 建立目录结构
10.3.3 连接App的配置及启动App
10.3.4 使用各种工具进行元素定位
10.3.5 使用PO方式建立元素定位locators类
10.3.6 使用PO方式建立元素操作方法基类
10.3.7 使用PO方式建立每个页面或功能的元素操作方法类
10.3.8 结合pytest的特性建立公共数据共享文件conftest.py
10.3.9 使用PO的方式建立测试类
10.3.10 使用yaml文件及pytest中的parametrize作为数据驱动程序
10.3.11 使用Allure标签定制报告
10.3.12 封装的一些公共的方法
10.3.13 在文件中读取配置文件数据
10.3.14 在测试用例中添加log日志
10.3.15 组织测试用例(添加运行标记)
10.3.16 实现持续集成——在Jenkins运行测试代码
附:本次运行的部分appium日志翻译
第11章 行为驱动开发(BDD)实现自动化测试
11.1 什么是BDD
11.2 BDD开发过程
11.3 BDD的功能和作用
11.4 中国BDD现状
11.5 pytest-bdd实现BDD开发
11.5.1 pytest-bdd安装
11.5.2 pytest-bdd的项目结构
11.5.3 BDD的标准语法
11.5.4 BDD实现步骤
11.5.5 BDD单元测试实践:添加功能(单一数据)
11.5.6 BDD单元测试实践:添加和删除功能(数据通过参数传递)
11.5.7 BDD单元测试实践:数据参数化
11.5.8 BDD接口测试实践:requests和pytest-bdd实现bing的搜索接口
11.5.9 BDD UI自动化测试实践:selenium和pytest-bdd实现搜索功能
11.5.10 BDD UI自动化测试实践:selenium和pytest-bdd实现搜索功能参数化
11.6 本章小结
第12章 pytest.ini配置及其他配置
12.1 pytest中的各种配置
12.1.1 @pytest.marker标记用例
12.1.2 添加测试用例路径
12.1.3 指定pytest忽略哪些搜索目录
12.1.4 usefixtures的默认配置
12.1.5 修改测试用例的搜索匹配规则
12.1.6 ids中解决中文显示乱码问题
12.1.7 console_output_style输出样式配置
12.1.8 xfail_strict不是预期的失败显示FAILED
12.1.9 cache_dir缓存目录设置
12.1.10 filterwarnings警告过滤
12.1.11 log相关配置
12.1.12 添加pytest执行默认参数选项
12.1.13 minversion的设置及限制
12.1.14 required_plugins需要的插件
12.2 警告相关配置
12.2.1 警告信息的默认捕获行为
12.2.2 命令行配置警告是否捕获
12.2.3 将警告转换成异常失败
12.2.4 通过pytest.ini设置filterwarnings实现
12.2.5 使用@pytest.mark.filterwarnings装饰器实现警告忽略
12.2.6 设置pytestmark变量实现添加警告
12.2.7 命令行选项参数去掉警告信息
12.2.8 通过触发警告自定义失败时的提示消息
12.3 内置fixture之临时目录
12.3.1 tmp_path
12.3.2 tmp_path_factory
12.3.3 tmpdir
12.3.4 tmpdir_factory
12.4 输出及捕获级别配置
12.4.1 标准输出/标准错误输出/标准输入的默认捕获行为
12.4.2 修改和去掉捕获行为
12.4.3 在测试用例中访问捕获到的信息
12.5 Mock
12.5.1 使用Mock对象模拟测试情景
12.5.2 Mock类的原型
12.5.3 MonkeyPatching返回的对象:临时修改全局配置
12.5.4 修改MonkeyPatching函数功能或者类属性
12.5.5 修改MonkeyPatching环境变量
12.5.6 修改MonkeyPatching字典
12.6 钩子——Hook方法的作用
12.6.1 pytest_runtest_makereport修改测试报告内容
12.6.2 pytest_collection_modifyitems改变用例执行顺序
12.6.3 pytest_terminal_summary
12.7 本章小结
更新时间:2023-08-31 20:28:14