展开全部

主编推荐语

本书系统讲解Python第三方测试框架pytest应用,包括框架核心技术、数据驱动技术、实用插件及自动化测试全流程。

内容简介

pytest 是 Python 的第三方测试框架,可以实现软件测试各层次自动化。本书系统讲述pytest的主要技术及在各层次自动化测试的应用。第1章介绍pytest框架。第2章讲解框架运行管理及对测试用例、断言的管理,运行管理中包括各种形式和层次的执行,展示框架的灵活性和全面性。第3章详细介绍框架的核心技术fixture,fixture使用依赖注入技术完成方法、类、文件级、会话级关联、数据关联和共享,可完美解决各种情况耦合和共享。第4章结合测试中最重要的数据驱动技术产生的参数化技术,并配合fixture技术实现一组代码多组数据的数据与代码分离技术。第5章系统讲解各种实用插件。第6~10章是实践,从单元自动化测试、接口自动化测试、Web端自动化测试及App自动化测试计划开始,讲解设计、实现到执行的全流程。第11章介绍BDD,让非技术人员也能参与测试的全过程。第12章介绍pytest一些相关配置。本书可作为从事软件自动化测试的技术人员的参考书籍,也可作为高等院校,高职类软件工程中质量保证的参考书籍。

目录

  • 封面页
  • 书名页
  • 版权页
  • 作者简介
  • 前言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-httpschmerver模拟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 本章小结
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

清华大学出版社

清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。