Python Web自动化测试入门与实战,从入门到入行

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

购买地址

京东:https://item.jd.com/12656245.html

当当:http://product.dangdang.com/28551658.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和开放性三个方面,以帮助有求职需求的读者应对面试。

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

本书特色

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

l  内容编排循序渐进,从零基础开始到框架结构在项目中应用,针对Web自动化测试新手量身打造。

l  知识点全面,涵盖了Web自动化测试体系中的大部分知识点。从基础知识到框架结构、持续集成等都进行了讲解。

l  理论与应用结合,知识点讲解中整合了许多示例进行演示说明。

l  技术新,本书所讲解的知识都是目前比较流行的,用到的技术比较新。

l  代码丰富,实用性和系统性非常强。

l  示例代码开源,参考附录可获取开发示例源码。

l  项目实战应用,学完基础知识,可以在项目中进行实战练习,即学即用,迅速获得项目经验。

l  结合笔者实际经验进行示例讲解。

l  扩展性,学完本书后不但会运用本书技术还能够写出高质量的代码,并应对求职面试。

目标读者

本书主要适合以下读者:

l  希望进入自动化测试行业的人员。

l  在校学生。

l  自动化测试零基础的测试从业者。

l  有一定基础希望提升自己的测试从业者。

l  培训机构学员。

希望读者通过阅读本书都能够快速进入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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342