Python中文网

Python自动化测试实战

cnpython379

Python自动化测试实战这本书,是由电子工业出版社在2019-03-01月出版的,本书著作者是 无涯 著,此次本版是第1次印刷发行, 国际标准书号(ISBN):9787121357046,品牌为电子工业出版社, 这本书的包装是16开平装,所用纸张为胶版纸,全书共有328页字数36万7000字, 是一本非常不错的Python编程书籍。

此书内容摘要

本书结合大量实际应用的案例,重点讲解了自动化测试在企业级的应用技术和实战。本书帮助读者系统地学习UI自动化测试和接口自动化测试的技能。

本书分为两大部分:第1部分UI自动化测试,包括第1~8章,以新的视角介绍了Selenium的知识体系,结合具体的案例讲解了Selenium的API在UI自动化测试的不同场景下的应用,典型问题的解决思路,主要内容包括Selenium的API、单元测试框架unittest、Jenkins、数据驱动、页面对象设计模式和UI自动化测试实战。第2部分接口自动化测试,包括第9~13章,介绍了HTTP应用层的协议,序列化与反序列化的知识,以及主流的测试工具PostMan、JMeter和Requests库在接口自动化测试中的应用和案例。

相信本书能够帮助想学习自动化测试的读者,以及准备带领团队进行自动化测试转型的测试管理者学习和掌握自动化测试实战技能。


关于此书作者

作者:无涯

资深测试工程师,从事软件测试工作8年。微信公众号“Python自动化测试”,专注测试技术分享,粉丝过万。


编辑们的推荐

适读人群 :本书的讲解从简单到复杂,面向测试工程师, 以及向学习自动化测试的同仁,以及中级测试工程师。

作者本着在实践中学习,在学习中实践的思维模式,设计了每一个章节的例子,从实战中学,用Python实现UI自动化测试,用Python实现接口自动化测试,值得一读。

Python自动化测试实战图书的目录

目 录
第1部分 UI自动化测试
第1章 自动化测试概述 2
1.1 自动化测试的价值 2
1.2 自动化测试的应用 3
第2章 Selenium元素定位实战 5
2.1 Selenium简述 5
2.2 Selenium结合浏览器实战 5
2.3 元素定位实战 6
第3章 Selenium与页面的交互 24
3.1 WebDriver浏览器的属性 24
3.2 WebElement类的方法 29
3.3 下拉框实战 35
3.4 弹出框实战 39
3.5 WebDriverWait类实战 44
3.6 ActionChains类实战 50
3.7 键盘事件实战 54
3.8 JavaScript的处理 55
3.9 获取截图 60
第4章 单元测试框架unittest 62
4.1 unittest简述 62
4.2 测试固件 63
4.3 测试执行 67
4.4 构建测试套件 70
4.5 分离测试固件 76
4.6 测试断言 78
4.7 断言的注意事项 82
4.8 批量执行测试用例 84
4.9 生成测试报告 87
4.10 代码覆盖率统计实战 89
第5章 Jenkins实战 92
5.1 Jenkins简述及部署 92
5.2 Jenkins实战 92
第6章 数据驱动 105
6.1 ddt实战 105
6.2 Txt实战 108
6.3 Csv实战 111
6.4 Excel实战 114
6.5 Xml实战 119
6.6 MySQL实战 123
第7章 Page Objects实战 131
7.1 Page Objects的实现 131
7.2 Page Objects中引入wait 140
7.3 Page Objects引入工厂设计模式 142
第8章 UI自动化测试实战 149
8.1 Web产品的实战 149
第2部分 接口自动化测试
第9章 HTTP协议 162
9.1 HTTP简述 162
9.2 HTTP的状态码 163
9.3 Cookie的请求流程 175
9.4 Session的请求流程 178
9.5 Token的请求流程 180
第10章 序列化与反序列化 183
10.1 JSON库的应用 183
10.2 JSON库的实例实战 185
第11章 PostMan的应用 190
11.1 PostMan简述 190
11.2 PostMan实战 191
11.3 PostMan接口测试实战 219
第12章 JMeter接口测试应用 226
12.1 JMeter简述 226
12.2 JMeter的语言切换 226
12.3 JMeter的插件安装 226
12.4 WebServices的请求 227
12.5 HTTP的请求 229
12.6 JMeter断言实战 232
12.7 HTTP请求默认值 234
12.8 用户定义的变量 235
12.9 Token的获取实战 237
12.10 HTTP Cookie管理器实战 240
12.11 生成测试报告实战 244
12.12 自动发送邮件实战 248
12.13 引入CI 252
12.14 JMeter接口测试实战 256
第13章 Requests实战 263
13.1 Requests简述 263
13.2 Requests发送请求 264
13.3 URL参数实战 266
13.4 请求头的添加 267
13.5 data参数实战 268
13.6 JSON参数实战 270
13.7 Token实战 272
13.8 Session实战 276
13.9 Session会话对象 281
13.10 Requests鉴权实战 286
13.11 超时处理 287
13.12 文件下载 289
13.13 文件上传 293
13.14 Requests接口测试实战 296
主要参考文献 314

部分内容试读

序1
技术赋能未来,推进个人成长
从人类第一次工业革命开始,技术就成为推进革新的原始驱动力之一,蒸汽机的出现促使了手工业到机器工业的转变,这是一场以机器替代人工的革命。在信息技术发展飞速的今天,技术更是变成了提高工程生产率的加速剂。测试是一个技术性的行业,投资自己的技术,赋能自己的未来。
当今行业内推崇测试的技术和技术的测试,其中,测试的技术就是各种可以提高测试可靠性、可持续性、可重复性和可复现性的技术手段,这其中包含了IT行业都在做的自动化测试、持续集成、持续交付、DevOps;而技术的测试是指在上述过程中通过技术手段完成具体工作内容的技术方法或者落地技术手段,既可以是测试辅助工具,也可以是为了测试而撰写的测试脚本。但是无论是哪一种,都是为了能够将测试工程师的时间释放出来,让机器完成重复可循环的工作内容,将时间还给测试工程师去完成创造性的工作内容。在任何一个团队,降低成本、提高效率都是一个永恒的话题,在测试行业里,自动化测试技术无疑是一个提高效率很好的工具。通过自动化将模式化、重复化的人类劳动变成机器的逻辑复现,释放人工,提高生产率。
近些年来,自动化测试、测试脚本的编写、测试框架的使用或者打造几乎变成公司招聘测试工程师的标配职位要求。但是,在实际操作过程中,测试工程师大量时间又被人工的重复工作内容所占据。这就变成了一对矛盾体。矛盾是由两个方面决定的,矛盾的一个方面如果不存在,另外一个就自然而然也不存在了。测试工作者通过学习和实践,将工作中繁重的手工劳动变成自动化的机器循环,就从根本上解决了上述矛盾,提升了效率,提升了自我。
随着自动化测试技术逐渐变成测试工程师的基础性要求,越来越多的IT技术从业者都开始着手学习自动化的测试技术,无论是UI的自动化,还是API的自动化,所有人都希望通过自动化的方式来完成枯燥乏味的、无限循环的手工测试劳动,这时需要先选择一门语言。尽管Java语言在研发领域占领主要地位,但是对于测试来说,并不一定要选择Java。这是因为Java入门门槛较高,入门和掌握这门语言需要花费更多的时间。
现在中小学教育已经加入了Python的课程,这也预示了Python的学习门槛会比较低,入门简单、容易掌握。那么通过Python入手开始学习编程技术,对于绝大部分行业新人来说是一个明智的开始。
技术赋能未来,推进个人成长。任何时候开始学习都为时不晚。如果您对任何一门编程语言都不是很熟悉,那么选择Python会让您更快速地走上自动化测试的道路。对于测试工程师,选择Python会大大缩短您从第一行代码到自动化脚本的学习时间。
本书由浅入深地介绍基于Python的自动化测试,从基础框架讲解、基础API使用,到框架设计、模式引入、持续集成等。通过本书的学习,您既可以掌握基于Python语言的自动化测试的技术解决方案,以及相关的工程化解决思路,同时还可以快速搭建出属于您自己的测试平台。
作者本着在实践中学习,在学习中实践的思维模式,设计了每一个章节的例子,并提供了案例的相关源代码,这对于初学者的学习是非常有帮助的。
对于不想被技术创新的时代车轮丢下的测试工程师和测试管理者,这本书值得一读。
陈磊(测者)
京东商城测试架构师
2018年11月于北京
序2
我已经连续两年组织了QA Intelligence发布《软件测试行业现状报告》的中文翻译工作,在2018年的报告中,有两段话让我印象深刻:
“越来越多的人从公司的IT和非IT部门转行测试,这表明测试似乎已经成为一个令人感兴趣的职业发展方向。”
“测试人员做的不仅仅是测试应用程序,76%的人还会进行自动化测试和脚本编写。”
相信这与大部分业内人士对当前软件测试行业的看法是一致的:
越来越多的人进入软件测试行业,越来越多的公司开展自动化测试。
同时,我们也看到软件测试行业面临如下问题:
? 越来越多的人进入软件测试行业,但是,软件测试人员的IT技能却普遍不高;
? 越来越多的公司开展自动化测试,但是,自动化测试的成效却难以显现。
一个很有意思的现象是,几乎每一个测试人员在应聘的时候都会被要求具备自动化测试的相关技能,笔试或者面试的时候也会被问及自动化测试的相关问题,但是,入职后,却发现日常的工作依然是“点点点”,说好的自动化测试在巨大的交付压力和频繁的业务变化面前,常常因难以实施,不见成效,而无人提及。
有一些公司就更有意思了,组织大家写了很多自动化测试用例,最后,由于维护成本高昂,默默地丢弃了;还有的公司,写了一堆自动化测试案例,每月甚至每几个月才运行一次,每次都要几日甚至数周的时间才能磕磕绊绊地运行完毕,并且需要由专门的开发测试人员照看着这些“资产”,稍有应用修改就需要大量调整案例和脚本,投入与产出严重不成比例。
以上,我称之为“软件测试中之怪现象”。
究其原因,在于从业者的技能不高,在于管理者的推进方法不当。
说到自动化测试,对于测试人员来说,接触最多的就是功能自动化测试和接口自动化测试了。从近几年与不少测试从业者的交流中可以看出,这的确也是当前很多测试人员提升自身技能的一个不错的切入点。
本书作者无涯从事软件测试工作多年,在功能和接口自动化测试方面多有心得,并且乐于分享,笔耕不辍,其公众号“Python自动化测试”帮助了很多软件测试学习者,很多学习者反馈其公众号中的文章对自身技能提升助益良多。
与无涯的相识,还是源于一年前张瑞喜老师的引荐。日后多有交流,日渐熟稔。受邀为其新书作序,有幸得其新作书稿先睹为快。作者的文字平实,重干货,少浮华摘录,内容更偏重在功能和接口自动化测试的实战讲解。全书从Selenium到unittest,从PostMan到JMeter,中间还穿插持续集成和数据驱动等相关话题,内容翔实,图文并茂,相信本书能够帮助多年一直在做测试并想转型做自动化测试的读者,以及准备带领团队进行自动化测试转型的测试管理者学习和掌握自动化测试实战技能。
相信此书对于希望提升自身自动化技能水平的软件测试学习者一定会大有裨益。
阿 奎
《Python编程基础与HTTP接口测试》作者
2018年11月7日
前 言
“学海无涯苦作舟”是我特别喜欢的一句话,所以我的网名叫“无涯”。因为自认为没有出众的天赋和才华,所以需要不断地鞭策自己。学习是一个痛苦的过程,某些时候感觉就像西西弗斯一样日复一日地干着同样一件事,明知很累但是还要不断地重复。
写书是一件很偶然的事。开始在百度阅读平台写文章,后来在公众号上不断地更新文章,把自己这几年学到的知识记录下来并分享给网友。出这本书,并不是说自己有多么专业,恰恰相反,我始终感觉像在无边的大海中一样,自己掌握的知识可以忽略不计。但我还是希望这些点点滴滴的记录能够帮助业界的同仁,帮助读者更深入地理解功能自动化测试和接口自动化测试的知识体系,掌握自动化测试的实战技能。
一直以来,很多测试人员想学习自动化测试技术但是又感到比较迷茫。一方面许多公司要求测试人员掌握自动化测试的技术;另外一方面,一些人虽然已经具备自动化测试技术,但是却感觉自动化测试在实际工作中的应用和推广比较艰难,很难取得测试效率的提升并得到管理层的认可。
工作中一路走来,我深知自动化测试技术对测试人员的重要性,以及在产品测试中的重要性。公司对产品的迭代速度越来越快,而且要求以更快的速度、更高的质量把产品推向市场,给客户带来价值。在这个层面上,测试是不能马虎的,产品上线后,一旦出现产品质量上的问题,则不仅没有给用户带来应有的价值,还会影响产品的口碑。
技术应该为人服务,同理,测试技术应该为测试人员服务。所以我们应该应用开源的测试工具和主流的开发语言,结合相关的测试技术来提高测试效率,从而提高工程效率,这是测试价值的一个很重要的体现方面。目前,测试的核心是手工测试,但自动化测试是测试人员的未来。技术是无法取代人的,但技术可以代替大量的人工。自动化测试技术可以很好地协助我们做回归测试,以及应用接口自动化测试的技术来提高产品质量测试的效率。测试人员应该更加关注应用层程序的交互和产品之间的业务流程的调用,而不是花费大量的精力在浅显的功能测试中。另外一个方面,当测试技术的维护成本高于我们自己能力的控制范围时,则测试人员和技术管理者需要思考针对测试技术的策略是否存在问题。自动化测试技术是一种能力,同时也是提高工程效率很重要的一部分。
我一直认同零缺陷的思想,它倡导我们做有价值的事。要体现出自动化测试技术的价值,就要使之确确实实地帮助团队提高产品测试效率,解决测试团队中人力投入过大的问题,让测试团队把更多的心思来放在测试设计和测试策略上来。
本书面向的读者
本书特别适合如下读者:
(1) 想转自动化测试的测试工作者;
(2) 已有一定Python基础知识想学习自动化测试者;
(3) 已有一定自动化测试的基础知识并想系统地了解自动化测试的读者;
(4) 想系统了解接口自动化测试在企业级的实战案例的读者;
(5) 测试团队管理者。
如何阅读本书
首先很感谢您阅读我写的第一本书。在本书中,系统完整地介绍了Python语言在功能自动化测试和接口自动化测试中的应用。本书要求读者具备一定的Python语言基础和测试方面的基本知识背景。书中对很多代码都增加了注释,方便理解。在功能自动化测试部分中,详细地介绍了Selenium的API在Web自动化测试中各个场景下的应用,也增加了一些产品的实战来说明Selenium的框架在Web自动化测试中的实战应用。在接口自动化测试部分,主要知识点包含了HTTP协议,主流测试工具PostMan和JMeter在接口自动化测试中的实例应用和实战案例,最后书中还介绍了Python语言结合第三方的库(Requests)在接口自动化测试中的应用,以及接口测试框架的设计、接口测试在企业级的实战。

关于此书评价

暂无.

书摘内容

第二章 Selenium元素定位实战
2.1 Selenium简述
Selenium是一个用于Web应用程序的自动化测试工具,Selenium直接运行在浏览器中,它可以模拟用户的行为操作,操作界面友好。Selenium支持IE、Google Chrome、Firefox、Opera等主流浏览器,同时Selenium也支持主流开发语言如Java、Python、C#等。本书主要基于Python语言结合Selenium进行产品的自动化测试。目前一些主流浏览器厂商已经采取措施使Selenium成为浏览器的一部分,厂商还针对Selenium的不同版本,提供了不同的驱动程序(Driver)来兼容Selenium的版本。
2.2 Selenium结合浏览器实战
针对不同的浏览器需要下载不同的驱动程序(Driver)来支持。以Firefox浏览器为例,在https://github.com/mozilla/geckodriver/releases/网站中选择“geckodriver -v0.23.0-win64.zip”下载后,解压文件后,把Geckodriver.exe文件放在Python安装程序的目录下,也就是C:\Python36-32。切记Firefox浏览器的版本号一定要大于48,否则执行代码后会出现驱动程序(Driver)版本与Firefox浏览器不兼容的情况。针对Firefox浏览器的测试代码如下:
#!/usr/bin/env python
#-*-coding:utf-8-*-
#author:wuya
from selenium import webdriver
driver=webdriver.Firefox()
driver.get('http://www.google.com.hk')
driver.find_element_by_id('lst-ib').send_keys('Selenium')
driver.quit()
在Selenium3.X版本推出之后,各浏览器厂商针对浏览器的版本已提供了相应的驱动程序(Driver),目的是在浏览器执行程序时会更加稳定。
2.3 元素定位实战
在功能的自动化测试中,元素定位是最基本也是最核心的技术之一。在功能的自动化测试中首先需要定位到元素,才可以对页面进行模拟人的行为的测试操作。
2.3.1 调试工具实战
在Chrome浏览器中,点击鼠标右键,在弹出的快捷菜单中选择“检查”选项,在弹出的调试信息窗口中,点击 按钮后,将鼠标移动到需要定位的目标位置,调试信息窗口中就会显示出元素的属性。以百度搜索为例,点击 按钮后,将鼠标移动到百度搜索输入框,如图2-3-1所示。
图2-3-1
在图2-3-1中可以看到,百度搜索输入框的元素属性ID为kw,NAME为wd,CLASS_NAME为s_ipt。
最新的Firefox浏览器已经不支持Firebug的使用。在浏览器中点击菜单栏的“工具”选项卡,在弹出的“工具”选项中点击“Web开发者”选项中的“Web控制台”子选项,如图2-3-2所示。
……

Python自动化测试实战最新最全的试读、书评、目录、简介信息由Python中文网整理提供。