推荐书籍《Python Web 自动化测试入门与实战》

Python Web 自动化测试入门与实战,从入门到入行
本书由一线测试工程师结合工作实践精心编撰。全书基于 Python 语言,从环境搭建、基础知识、常用框架、项目实战、持续集成等方面详细介绍了 Web 自动化测试的知识。全书共三篇 14 章,一篇(1~7 章)为基础篇,介绍 Python 语言基础、Selenium 和 WebDriver 的使用以及两个流行的单元测试框架 UnitTest 和 Pytest;二篇(8 章~10 章)为实践篇,主要以数据驱动模型和 PO 模型为例介绍自动化测试项目的流程和应用;三篇(11 章~14 章)为卓异篇,介绍了测试人员如何拓展自己的知识面、提高项目代码质量的建议以及一些与自动化测试相关的面试题。 本书技术先进,通俗易懂,示例丰富,特别适合于想入行自动化测试岗位的初学者和在校学生,也适合掌握了一定的测试基础知识希望快速提升实战能力的读者使用。

购买地址
京东:https://item.jd.com/12656245.html
天猫:https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.131.17ad3091FI6vea&id=618449194588&skuId=4611686636876582492&user_id=651359430&cat_id=2&is_b=1&rn=bf2da7ab0e99755e8622664c081020f5
当当:http://product.dangdang.com/1621250465.html

图书信息

定价:79 元
印次:1-1
ISBN:9787302552956
出版日期:2020.06.01
印刷日期:2020.04.23

作者简介
杨定佳,英文名 Tynam,从事软件测试工作多年,目前就职于某外企。在自动化测试设计、框架搭建和开发中具有自己独特的见解。长期在 IT 博客圈分享软件测试与开发技术相关博文

前 言
随着互联网的快速发展,软件研发模型越来越完善,软件质量也越来越受到各公司的重视,在这种情况下,软件测试技术特别是自动化测试技术在产品研发过程中扮演了极为重要的角色。自动化测试能够快速、全面地对软件进行测试,从而在保证产品质量的前提下进行软件的快速迭代。与此同时,软件测试岗位吸引了大量从业者。本书正是为满足初入自动化测试行业的从业者的需求而精心编撰。

本书基于 Python 语言编写,对于 Web 自动化测试相关技术做了整体详细的介绍,从基础到提升、从理论到实践、从单个知识点到项目运用,既可以让读者快速上手又能够运用于实际项目,从而提高读者的实战技能。

本书结构
本书内容分为 3 大篇,共计 14 章。各部分内容概述如下:

基础篇(第 1 章~第 7 章)—自动化测试基础知识。本篇主要讲述自动化测试人员需要掌握的基本知识,从代码使用层面进行介绍,包括 Python 基础、WebDriver API 的使用及单元测试框架等知识。

第 1 章~第 3 章是自动化测试的入门知识。第 1 章为开始自动化工作前的准备工作—环境搭建。第 2 章和第 3 章分别介绍 Python 的使用和 WebDriver API 的使用,掌握了基础知识后就能够编写一些简单的自动化测试脚本。

第 4 章~第 7 章是学习完第 1 章~第 3 章入门知识后的进阶知识。第 4 章和第 6 章分别介绍了经常使用的两种单元测试框架 UnitTest 和 Pytest,学完单元测试框架便可以对项目有个基本的构思。第 5 章介绍 Selenium Grid 分布式执行测试用例(好的项目还需要搭配高速的执行效率)。第 7 章介绍了 Python 的一些常用模块。

基础篇主要是为自动化测试实践运用打下牢固的基础,适合初学自动化测试的人员学习。

实践篇(第 8 章~第 10 章)—自动化测试项目实战。

实践篇是在掌握了基础篇的基本知识后,在自动化测试项目的应用。从项目层面进行介绍,以数据驱动模型和 PO 模型为基础进行实战练习,然后进行持续集成操作。

第 8 章使用数据驱动模型,从项目解析、框架搭建、用例组织、数据操作等几个方面进行介绍,主要使读者对数据驱动模型有一个认识,该模型在实际项目中会被经常使用。

第 9 章使用 PO 模型,以一个简单的后台管理系统从项目解析、框架搭建、常用结构封装、页面封装、用例组织、设置项目入口等几个方面进行介绍。很多公司在项目中都会以 PO 模型为基础,混合数据驱动模型和其他的一些方式进行项目操作,建议读者对本章内容进行深入的学习。

第 10 章介绍了目前最流行的持续集成工具 Jenkins,对第 9 章产生的项目测试脚本进行持续集成,从项目创建、任务定时、邮件发送等几个方面进行实战应用。

本篇属于项目实践篇,适合具有一定基础的自动化测试人员学习。学完实践篇,在项目解析、自动化框架搭建、模块封装、用例组织、测试报告生成和持续集成上,读者已经有一定程度的认知,由此便可以在中小型项目上进行实际操作。

卓异篇(第 11 章~第 14 章)—拓展知识面并提高项目质量。

卓异篇主要用来提高读者的知识面,一个完整的自动化测试项目不只是写好测试脚本,还需要一些辅助的知识技能,本篇将介绍 6 种测试模型、如何写一手高质量的代码和以 GitHub 为例讲解 Git 的基本使用,此外,还介绍了一些初级测试人员求职必备的面试题。

第 11 章介绍的是 5 种基本自动化测试模型,即线性模型、模块化驱动模型、数据驱动模型、关键字驱动模型及行为驱动模型。

第 12 章介绍如何提高自己的编码质量,从编码规范、项目层次结构、个人学习几个方面进行说明。

第 13 章介绍了一个开源的分布式版本控制系统 Git,并以 GitHub 为例介绍 Git 命令的使用。

第 14 章精选了一些常见的自动化测试经典面试题,涵盖 Python、Selenium 和开放性三个方面,以帮助有求职需求的读者应对面试。

卓异篇旨在拓展知识,不仅适合自动化测试人员,对于从事测试工作的从业者也同样适合。

本书特色
本书的特点主要体现在以下几方面:

目标读者
本书主要适合以下读者:

希望读者通过阅读本书都能够快速进入 Web 自动化测试领域,对 Web 自动化测试有一个清晰地理解,并且具备承担 Web 自动化测试开发的能力。

由于编者水平所限,书中难免存在错误或解释不到位的地方,恳请广大读者批评指正。

联系邮箱:tynam.yang@gmail.com。

2019 年 12 月

图书目录
第一篇 基础篇

第 1 章 学习环境的搭建... 1

1.1 环境搭建... 1

1.1.1 Selenium 简介... 2

1.1.2 Python 简介... 3

1.1.3 Python 的安装... 5

1.1.4 环境变量的设置... 6

1.1.5 Selenium 的安装... 7

1.1.6 浏览器驱动的安装... 8

1.1.7 PyCharm 的安装... 12

1.2 开始你的第一个项目... 15

第 2 章 Python 基础... 18

2.1 基础语法... 18

2.1.1 打印... 18

2.1.2 编码... 19

2.1.3 数据类型... 20

2.1.4 变量... 21

2.1.5 注释... 21

2.1.6 缩进... 22

2.2 运算符... 22

2.2.1 算术运算符... 22

2.2.2 比较运算符... 23

2.2.3 逻辑运算符... 23

2.2.4 Is 与 ==. 24

2.3 条件语句... 24

2.3.1 单项判断... 25

2.3.2 双向判断... 25

2.3.3 多项判断... 25

2.4 循环语句... 26

2.4.1 for 语句... 26

2.4.2 while 语句... 27

2.4.3 continue 和 break. 28

2.5 列表... 28

2.5.1 创建列表... 28

2.5.2 获取元素... 29

2.5.3 添加元素... 29

2.5.4 删除元素... 29

2.5.5 列表切片... 30

2.5.6 其他操作... 31

2.6 元组... 31

2.6.1 创建元组... 31

2.6.2 获取元素... 31

2.6.3 拼接元组... 32

2.6.4 删除元组... 32

2.6.5 其他操作... 32

2.7 字典... 33

2.7.1 创建字典... 33

2.7.2 获取元素... 33

2.7.3 修改元素... 33

2.7.4 删除元素... 34

2.7.5 其他操作... 34

2.8 集合... 34

2.8.1 创建集合... 35

2.8.2 添加元素... 35

2.8.3 移除元素... 35

2.8.4 其他操作... 36

2.9 推导式... 36

2.9.1 列表推导式... 36

2.9.2 字典推导式... 37

2.9.3 集合推导式... 37

2.10 生成器... 38

2.10.1 创建生成器... 38

2.10.2 send 方法... 39

2.11 迭代器... 40

2.11.1 可迭代对象... 40

2.11.2 创建迭代器... 40

2.12 函数... 41

2.12.1 函数... 41

2.12.2 参数... 42

2.12.3 匿名函数... 45

2.12.4 参数类型... 45

2.12.5 返回值类型... 46

2.13 类和对象... 46

2.13.1 创建类... 46

2.13.2 创建实例对象... 47

2.13.3 类的私有化... 48

2.13.4 类继承... 49

2.13.5 类的重写... 51

2.14 模块... 52

2.14.1 模块的分类... 52

2.14.2 模块的导入... 52

2.15 作用域... 53

2.16 异常机制... 54

2.16.1 try-except 54

2.16.2 else. 55

2.16.3 finally. 56

2.17 init.py 文件... 56

2.18 Python 实用技巧... 57

第 3 章 Selenium WebDriver 62

3.1 WebDriver 简介... 62

3.1.1 WebDriver 的特点... 62

3.1.2 常用 WebDriver 63

3.2 源码中查找元素... 63

3.2.1 查看网页源码... 63

3.2.2 查找元素的属性... 64

3.3 元素定位... 65

3.3.1 id 定位... 68

3.3.2 class 定位... 68

3.3.3 name 定位... 69

3.3.4 tag 定位... 70

3.3.5 xPath 定位... 70

3.3.6 link 定位... 71

3.3.7 Partial link 定位... 72

3.3.8 CSS 选择器定位... 72

3.3.9 By 定位... 73

3.3.10 确认元素的唯一性... 74

3.4 定位一组元素... 76

3.5 浏览器操作... 78

3.5.1 浏览器最大化... 78

3.5.2 设置浏览器的宽和高... 78

3.5.3 访问网页... 78

3.5.4 浏览器后退... 79

3.5.5 浏览器前进... 79

3.5.6 刷新页面... 80

3.5.7 关闭浏览器当前窗口... 80

3.5.8 结束进程... 80

3.5.9 获取页面 title. 81

3.5.10 获取当前页面的 URL. 81

3.5.11 获取页面源码... 82

3.5.12 切换浏览器窗口... 83

3.5.13 滚动条操作... 86

3.6 对象操作... 88

3.6.1 单击对象... 89

3.6.2 输入内容... 89

3.6.3 清空内容... 90

3.6.4 提交表单... 90

3.6.5 获取文本内容... 90

3.6.6 获取对象属性值... 91

3.6.7 对象显示状态... 91

3.6.8 对象编辑状态... 94

3.6.9 对象选择状态... 95

3.7 键盘操作... 96

3.7.1 send_keys 操作... 96

3.7.2 keyUp/keyDown 操作... 98

3.8 鼠标操作... 99

3.8.1 鼠标右击... 99

3.8.2 鼠标双击... 99

3.8.3 鼠标悬停... 100

3.8.4 鼠标拖放... 100

3.8.5 鼠标其他事件... 101

3.9 下拉框操作... 101

3.10 特殊 Dom 结构操作... 103

3.10.1 Windows 弹窗... 103

3.10.2 非 Windows 弹窗... 106

3.10.3 frame 与 iframe. 108

3.11 文件上传操作... 110

3.11.1 直接上传... 110

3.11.2 使用 AutoIt 上传... 112

3.11.3 使用 WinSpy 上传... 115

3.12 文件下载操作... 119

3.12.1 手动修改... 119

3.12.2 通过 options 修改... 119

3.13 WebDriver 的高级特性... 120

3.13.1 cookie 操作... 120

3.13.2 JavaScript 调用... 122

3.13.3 屏幕截图... 122

3.14 时间等待... 123

3.14.1 强制等待... 123

3.14.2 隐式等待... 124

3.14.3 显式等待... 124

3.15 其他设置... 125

3.15.1 限制页面加载时间... 125

3.15.2 获取环境信息... 126

3.15.3 非 W3C 标准命令... 127

3.16 配置 Chrome 浏览器... 127

3.17 SSL 证书错误处理... 129

第 4 章 UnitTest 测试框架... 131

4.1 UnitTest 简介... 131

4.2 TestFixture. 132

4.3 TestCase. 133

4.4 断言 Assert 135

4.5 TestSuit 137

4.5.1 TestSuite 直接构建测试集... 137

4.5.2 addTest( ) 构建测试集... 138

4.5.3 addTests( ) 构建测试集... 139

4.5.4 skip 装饰器... 139

4.6 TestLoader 140

4.7 TestRunner 142

4.8 生成 HTML 报告... 143

第 5 章 Selenium Grid. 145

5.1 Selenium Grid 简介... 145

5.2 Selenium Grid 的工作原理... 145

5.3 Selenium Grid 测试环境的搭建... 146

5.3.1 文件准备... 146

5.3.2 部署 Hub 节点... 147

5.3.3 部署 Node 节点... 148

5.4 测试脚本开发... 149

5.4.1 指定 Node 节点... 149

5.4.2 指定 Hub 地址... 150

第 6 章 Pytest 测试框架... 152

6.1 Pytest 简介... 152

6.2 Console 参数... 154

6.2.1 实例初体验... 154

6.2.2 -v 参数... 155

6.2.3 -h 参数... 156

6.2.4 其他参数... 156

6.3 mark 标记... 157

6.3.1 标记测试函数... 157

6.3.2 示例说明... 158

6.3.3 直接标记... 163

6.3.4 模糊匹配标记... 165

6.3.5 使用 mark 自定义标记... 166

6.4 固件 Fixture. 167

6.4.1 Fixture 的使用... 167

6.4.2 Fixure 的作用域... 168

6.4.3 autouse(自动使用)... 170

6.4.4 yield 的使用... 171

6.4.5 共享 Fixture 功能... 173

6.4.6 参数化... 175

6.4.7 内置 Fixture. 176

6.5 Pytest 插件... 182

6.5.1 插件的安装与卸载... 182

6.5.2 查看活动插件... 183

6.5.3 插件的注销... 184

6.6 Allure 测试报告... 184

6.6.1 Allure 的安装... 184

6.6.2 脚本应用... 186

6.6.3 报告生成... 186

第 7 章 Python 脚本开发常用模块... 189

7.1 日期和时间模块 time 和 datetime. 189

7.2 文件和目录模块 os 190

7.3 系统功能模块 sys 191

7.4 导入第三方模块 pip. 192

7.5 邮件模块 smtplib. 195

7.5.1 开启邮箱 SMTP 服务... 195

7.5.2 smtplib 模块的使用... 196

7.6 日志模块 logging. 199

7.7 CSV 文件读写模块 csv. 201

7.8 Excel 操作模块 openpyxl 203

7.9 MySQL 数据库操作包 pymysql 205

7.9.1 简单使用... 206

7.9.2 获取查询数据... 207

7.9.3 增删改数据... 209

7.10 JSON 数据... 210

7.10.1 JSON 语法... 210

7.10.2 Python 读写 JSON.. 211

7.11 多线程模块 threading. 212

第二篇 实践篇

第 8 章 数据驱动模型及项目应用... 215

8.1 数据驱动简介... 215

8.2 ddt 的使用... 216

8.2.1 ddt 的安装... 216

8.2.2 ddt 的常用方法... 216

8.2.3 实例... 217

8.3 项目解析... 218

8.4 框架搭建... 220

8.5 设计测试用例... 221

8.6 数据文件操作... 222

8.7 测试用例生成... 225

8.7.1 Excel 数据处理... 225

8.7.2 测试步骤... 226

8.7.3 断言处理... 227

8.7.4 使用 ddt 生成测试用例... 228

8.8 测试执行... 229

第 9 章 PO 模型——一个测试项目的实现... 231

9.1 项目解析... 231

9.1.1 主页... 232

9.1.2 关于我们页面... 233

9.1.3 退出登录... 233

9.2 框架搭建... 233

9.3 配置文件... 235

9.4 常用结构的封装... 236

9.4.1 判断元素存在... 236

9.4.2 Tab 切换... 236

9.4.3 多级菜单... 239

9.4.4 表格结构... 241

9.4.5 分页... 244

9.5 页面封装... 246

9.5.1 基础页面... 246

9.5.2 登录页面... 248

9.5.3 主页页面... 251

9.5.4 关于我们页面... 257

9.5.5 退出登录功能... 257

9.6 测试用例生成... 257

9.6.1 登录功能的测试用例... 257

9.6.2 主页页面测试用例... 258

9.6.3 关于我们页面的测试用例... 260

9.6.4 退出登录功能的测试用例... 260

9.7 测试用例的组织... 261

9.8 设置项目入口... 262

第 10 章 持续集成在自动化测试中的应用... 264

10.1 Jenkins 的安装... 264

10.1.1 Jenkins 的下载... 264

10.1.2 安装... 265

10.1.3 创建管理员用户... 267

10.2 创建项目... 267

10.3 任务定时... 269

10.3.1 任务定时构建的设置... 269

10.3.2 设置说明... 270

10.3.3 构建实例... 271

10.4 邮件发送... 271

10.4.1 插件安装... 271

10.4.2 HTML 报告配置... 273

10.4.3 邮件配置... 275

第三篇 卓异篇

第 11 章 自动化测试模型... 279

11.1 自动化测试模型简介... 279

11.2 线性模型... 281

11.3 模块化驱动模型... 282

11.4 数据驱动模型... 282

11.5 关键字驱动模型... 282

11.6 混合驱动模型... 283

11.7 行为驱动模型... 283

11.7.1 安装 Behave. 284

11.7.2 Behave 的使用... 286

11.7.3 运行... 288

11.7.4 生成测试报告... 289

第 12 章 高质量代码的编写... 291

12.1 编码规范... 291

12.2 分层与结构... 294

12.3 阅读源码的技巧... 295

12.3.1 分析层次... 295

12.3.2 分析结构... 296

12.3.3 分析具体文件... 296

12.4 持续学习... 298

第 13 章 用 Git 管理项目... 299

13.1 Git 简介... 299

13.2 安装 Git 300

13.3 Git 的配置... 301

13.3.1 配置用户信息... 301

13.3.2 文本编辑器配置... 301

13.3.3 配置差异分析工具... 301

13.3.4 查看配置信息... 302

13.4 常用命令... 302

13.5 GitHub. 304

13.5.1 账号注册... 304

13.5.2 创建仓库... 306

13.5.3 上传项目... 307

13.5.4 Jenkins 与 Git 308

第 14 章 精选面试题... 310

14.1 Python 题... 310

14.2 Selenium 题... 317

14.3 开放性题... 321

附录 1 示例代码... 324

附录 2 项目搭建... 327

参考文献... 330


↙↙↙阅读原文可查看相关链接,并与作者交流