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