万本电子书0元读

万本电子书0元读

顶部广告

pytest框架与自动化测试应用电子书

随着软件发速度的加快,新技术的出现,DevOps在各企业落地成为现实。测试自动化技术成为必须和紧俏技术。本书详细讲解如何实现软件测试环节的自动化,配有示例及综合实战项目,帮助初学者按步骤实现自动化测试。

售       价:¥

纸质售价:¥75.50购买纸书

114人正在读 | 0人评论 6.2

作       者:房荔枝/梁丽丽

出  版  社:清华大学出版社

出版时间:2021-11-01

字       数:12.5万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
pytest 是 Python 的第三方测试框架,可以实现软件测试各层次自动化。本书系统讲述pytest的主要技术及在各层次自动化测试的应用。 第1章介绍pytest框架。第2章讲解框架运行管理及对测试用例、断言的管理,运行管理中包括各种形式和层次的执行,展示框架的灵活性和全面性。第3章详细介绍框架的核心技术fixture,fixture使用依赖注技术完成方法、类、文件级、会话级关联、数据关联和共享,可完美解决各种情况耦合和共享。第4章结合测试中重要的数据驱动技术产生的参数化技术,并配合fixture技术实现一组代码多组数据的数据与代码分离技术。第5章系统讲解各种实用插件。第6~10章是实践,从单元自动化测试、口自动化测试、Web端自动化测试及App自动化测试计划始,讲解设计、实现到执行的全流程。第11章介绍BDD,让非技术人员也能参与测试的全过程。第12章介绍pytest一些相关配置。 本书可作为从事软件自动化测试的技术人员的参考书籍,也可作为高等院校,高职类软件工程中质量保证的参考书籍。<br/>【推荐语】<br/>随着软件发速度的加快,新技术的出现,DevOps在各企业落地成为现实。测试自动化技术成为必须和紧俏技术。本书详细讲解如何实现软件测试环节的自动化,配有示例及综合实战项目,帮助初学者按步骤实现自动化测试。<br/>【作者】<br/>房荔枝  51testing资深讲师,具有十几年中、大型公司软件测试、测试自动化及测试管理的一线经验。 梁丽丽  哈尔滨职业技术学院讲师,院生态电商专业创新团队成员,院电子商务专业工程技术教育认证(TAC)成员,院优秀班主任,长期从事网页设计、无线传感器网络研究应用、计算机应用技术领域的教学和研究工作。先后设商务网页设计与制作、电子商务网站建设与管理、计算机应用技术、人工智能等多门课程。主持省规划办重课题1项,参与省级及校级课题4项,获国家发明专利2项,发表论文6篇。<br/>
目录展开

作者简介

前言PREFACE

目 录

第1章 pytest框架介绍

1.1 pytest框架引入

1.1.1 测试框架能为我们解决什么问题

1.1.2 测试框架的分类

1.1.3 什么是pytest

1.pytest的特点和优点

2.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 断言的分类与使用

1.验证函数返回值是否相等

2.表达式断言

3.比较类型断言

4.不同数据类型的比较断言

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装饰器

1.在单个用例中使用pytest.mark.skipif标记

2.一个用例上用两个不同的pytest.mark.skipif标记

3.两个模块之间共享pytest.mark.skipif标记

2.6.4 pytest.importorskip方法

1.引入失败时跳过

2.引入模块版本不符合时跳过

3.使用pytest.skip()实现导入不成功时跳过

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格式的测试报告

1.在报告中为测试用例附加额外的子节点信息

2.在报告中为测试用例附加额外的属性信息

3.在报告中为测试集附加额外的子节点信息

2.10 不稳定测试用例处理

2.10.1 为什么不稳定测试是个问题

2.10.2 潜在的根本原因是什么

1.系统状态

2.过于严格的断言

2.10.3 pytest为我们提供的解决策略

2.10.4 pytest_CURRENT_TEST

2.10.5 可以重新运行的插件

2.10.6 测试人员采用的解决策略

1.拆分测试套件

2.失败的视频/截图

3.删除或重写测试

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

1.在不同层次建立文件夹

2.各个文件的代码

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与测试方法中的参数关系

1.测试方法未声明,mark.parametrize中声明

2.测试方法参数声明的范围小于mark.parametrize中声明的范围

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测试覆盖率

1.coverage

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模拟未实现的部分

1.mock的定义

2.mock的源起

3.pytest-mock插件

4.MagicMock

5.总结

5.3.9 pytest-ordering调整执行顺序

5.3.10 pytest-pep8自动检测代码规范

5.3.11 pytest-picked运行未提交git的用例

1.参数--picked=first

2.参数--mode=unstaged执行未提交的所有文件

3.参数--mode=branch运行分支上已经被暂存但尚未提交的代码

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的简单用法

1.收集结果

2.查看报告

6.4.5 Allure的帮助说明

6.5 定制测试报告

6.5.1 定制详细的步骤说明

1.步骤(step)可外部调用也可嵌套

2.步骤(step)可以有带参数的描述行

3.fixture和conftest同样支持步骤step

6.5.2 不同类型的附件补充测试说明

6.5.3 定制各种类型内容描述

1.支持unicode字符串

2.来自HTML的渲染description_html

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 类的单元测试

1.提供一个答案的测试用例编写

2.提供多个答案的测试用例编写

3.使用公共的初始化方法

7.6 本章小结

第8章 API自动化测试实践

8.1 测试微信公众号接口

8.1.1 熟悉接口文档以便获取信息

1.获取本人的测试号信息

2.获取token

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框架技术简述

1.浏览器操作

2.定位页面元素技术

3.操作元素技术

4.执行中等待

9.4 整合Web自动化测试框架

9.4.1 自动化测试准备

9.4.2 创建工程目录

9.4.3 页面元素定位

1.编写登录页的元素定位

2.编写首页元素定位

3.职称添加功能页面元素定位

9.4.4 页面元素操作

1.公共功能的操作方法

2.登录页的操作方法

3.添加职称页的操作方法

9.4.5 提高代码的复用性和灵活性——封装

1.获得路径get_path.py

2.读取yaml数据

3.配置日志文件log.py

4.config.yaml登录数据配置

5.文件配置pytest.ini

9.4.6 编写测试用例

1.编写conftest.py

2.编写添加职称模块的测试方法

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系统

1.安装JDK(Java 8以上版本)

2.安装步骤

3.配置环境变量JAVA_HOME

4.配置环境变量CLASSPATH

5.配置环境变量Path

6.在Windows系统验证安装成功

7.安装和验证Java JDK——Mac

10.2.2 安装和验证Node.js

10.2.3 安装AndroidSDK

1.下载AndroidSDK

2.设置Android环境变量

3.配置Path环境变量

4.验证环境变量

10.2.4 安装模拟器或连接真机

1.连接模拟器

2.连接真机

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 使用各种工具进行元素定位

1.使用uiautomatorview定位

2.使用appium-desktop定位

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实现步骤

1.前提条件

2.实现添加博客功能

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 修改和去掉捕获行为

1.文件描述符级别的捕获行为(默认)

2.sys级别的捕获行为

3.去掉捕获行为

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改变用例执行顺序

1.pytest默认执行顺序

2.items用例排序

12.6.3 pytest_terminal_summary

12.7 本章小结

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部