1、CMYCMMYCYCMYK扉.pdf 1 2017/3/16 10:57:51 内 容 简 介 本书以接口测试为主线,以 Web 开发为切入点,全面介绍了 Web 接口开发与自动化测试过程中使用的相关技术。全书分为 15 章,第 1 章介绍了 Python 的基础知识,解答初学 Python 的同学都会遇到的一些问题;第 2 章到第 5 章以开发发布会签到系统为需求,介绍了 Django Web 开发技术;第 6 章介绍了 unittest单元测试框架,以及在 Django 中如何编写单元测试;第 7 章到第 10 章主要围绕接口的相关概念,Web 接口开发,接口测试工具和接口自动化测试框架的
2、开发;第 11 介绍了安全接口的开发与测试;第 12、13 章介绍了 Web Services 技术;第 14、15 章介绍了 Django Web 项目的部署和接口性能测试。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 Web 接口开发与自动化测试:基于 Python 语言/虫师编著.北京:电子工业出版社,2017.4 ISBN 978-7-121-31099-7 .W.虫.网页制作工具程序设计软件工具程序设计.TP393.092.2TP311.561 中国版本图书馆 CIP 数据核字(2017)第 050485 号 责任编辑:安 娜
3、 印 刷:北京中新伟业印刷有限公司 装 订:北京中新伟业印刷有限公司 出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编:100036 开 本:787980 1/16 印张:18 字数:366 千字 版 次:2017 年 4 月第 1 版 印 次:2017 年 4 月第 1 次印刷 印 数:3000 册 定价:59.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:010-51260888-819,。前前
4、言言 本书的原型是我整理的一份 Django 学习文档。在从事软件测试工作的这六七年里,我一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮助到许多软件测试人员。说回到接口测试的话题上来,根据分层自动化测试的思想,上层为 UI 层。关于 UI 层的自动化测试我们已经很熟悉了,许多技术和工具都是围绕这一层来设计的,我们要想做自动化,首先想到和尝试去做的也是这一层的自动化实现。底层为单元测试,对于单元级别的自动化测试来说,虽然大多数测试人员并没有真正做过,但我们知道,它一般使用单元测试框架,通过一段代码去测试另一段代码;而接口测试刚好处于
5、中间层,不太好理解,也不太好解释,因为在开发的项目中只有程序目录/文件、类、方法、函数这些,并没有一个叫作“接口”的东西。但是,它却又无处不在,是一个出现频率极高的词,时刻挂在开发人员的嘴边。什么是接口?如何对接口进行测试呢?我曾经也有很长一段时间并不太理解什么是接口测试。为什么没有一本讲接口测试的书呢?性能测试和 UI 自动化测试的书籍每年都会出版好几本,与之相比,几乎找不到一本专门介绍接口测试的书。现在想来可能是因为它太简单了吧!简单到没什么可讲的,甚至接口测试比功能测试还要简单得多。但是,真的做好接口测试又很难,或者说难点并不在于接口测试本身,而是需要有读懂接口代码处理逻辑的能力,这就要
6、求你必须具备一定的开发基础,因而对许多测试人员来说,已经形成了门槛。要写一本关于接口测试的书,一种讨巧的做法就是把目前主流的接口测试工具都介绍一遍,这很符合主题。然而,我并不认为把这些工具都学好就可以做好接口测试。举一个简单的例子,我的接口使用了加密,例如,用时间戳+密钥生成 AES 加密字符串,再将字符串生成 base64 字符串作为接口参数传输,这其实是一种常见的加密策略,而我所了解的IV Web 接口开发与自动化测试基于 Python 语言 大多数接口测试工具都无法做到对这种加密接口的测试。原因很简单,加密算法和加密策略多种多样,而工具却很难模拟这种多样性的加密策略。但是,站在开发的角度
7、上看,接口测试就很简单了,开发怎么调用,测试就怎么调用呗!只不过测试的目的是验证在传各种参数的情况下,接口是否可以正确地处理并返回结果。所以,我选择另一种需要很高学习成本的方法来讲解接口测试,从 Web 接口开发讲起,理解了接口是如何开发的,再做接口测试自然就变得非常简单了。你会看到本书前几章都是在讲 Web 开发以及 Web 接口开发,你可能会怀疑自己是不是买错书了,明明是要学习接口测试的,怎么介绍的都是开发的技术。其实,如果你只是想学习 Web 开发的话,那么本书也是一本不错的入门教程。本书共分为 15 个章节,涵盖了不少话题,这也是我在写作时对自己的要求,不要讲解太基础的东西,不要讲太多
8、无聊的概念,要有很强的可操作性。第 1 章是 Python 基础,第25 章是 Web 开发,第 6 章是单元测试,第 710 章主要讲接口的概念、开发与测试,第11 章介绍安全接口的开发与测试,第 1213 章讲 Web Service 技术,第 1415 章介绍项目的部署与性能测试。所以,这并不是一本单纯面向测试人员的书,同样适合开发的小伙伴阅读。到了感谢部分,首先,感谢身边的同事,一年多的接口自动化测试实践过程中,我收获了很多,感谢测试经理唐亮对我们在尝试新技术时的支持,感谢开发组的蓝仕坤、陈晓发在技术上给了我很大的帮助。其次,感谢接口自动化测试群里的小伙伴,他们给本书提了很多建议,包括
9、本书的名字,也是在群里投票的结果。再次,感谢我的妻子,她默默地容忍着我每天晚睡的坏习惯,感谢她一直以来的包容与理解。最后,感谢编辑安娜,没有她这本书也不会出版,我们合作一直很愉快。由于作者水平有限,希望你带着怀疑的精神阅读本书,如果发现错误,欢迎批评指正。2017 年 1 月 13 号凌晨 虫师 目 录 V 目目 录录 第 1 章 Python 学习必知.1 1.1 Python 2.x 与 Python 3.x 选择.1 1.2 Python 的安装.2 1.2.1 在 Windows 下安装 Python.2 1.2.2 安装 Python 2 和 Python 3 两个版本.3 1.2.
10、3 “python”不是内部或外部命令.5 1.3 扩展库的安装.6 1.3.1 pip 安装扩展库.6 1.3.2 tar.gz 文件安装.9 1.3.3 .whl 文件安装.9 1.3.4 GitHub 克隆项目安装.9 1.4 开发工具选择.11 1.4.1 Sublime Text3.11 1.4.2 Atom.13 1.4.3 PyCharm.14 1.5 程序报错不要慌.15 1.5.1 缩进错误.15 1.5.2 引包错误.16 1.5.3 编码错误.16 1.5.4 学会分析错误.17 第 2 章 Django 入门.19 2.1 Django 开发环境.19 2.1.1 在
11、Windows 下安装 Django.20 VI Web 接口开发与自动化测试基于 Python 语言 2.1.2 在 Ubuntu 下安装 Django.20 2.2 开始第一个 demo.21 2.2.1 创建项目与应用.22 2.2.2 运行项目.25 2.2.3 Hello Django!.27 2.2.4 使用模板.29 2.3 Django 工作流.30 2.3.1 URL 组成.31 2.3.2 URLconf.32 2.3.3 views 视图.33 2.3.4 templates 模板.34 2.4 MTV 开发模式.34 第 3 章 Django 视图.36 3.1 来写个
12、登录功能.36 3.1.1 GET 与 POST 请求.37 3.1.2 处理登录请求.40 3.1.3 登录成功页.42 3.2 Cookie 和 Session.44 3.2.1 Cookie 的使用.44 3.2.2 Session 的使用.46 3.3 Django 认证系统.49 3.3.1 登录 Admin 后台.49 3.3.2 引用 Django 认证登录.50 3.3.3 关上窗户.51 第 4 章 Django 模型.53 4.1 设计系统表.53 4.2 admin 后台管理.56 4.3 基本数据访问.59 4.3.1 插入数据.60 4.3.2 查询数据.61 目 录
13、 VII 4.3.3 删除数据.63 4.3.4 更新数据.63 4.4 SQLite 管理工具.64 4.4.1 SQLite Manager.64 4.4.2 SQLiteStudio.65 4.5 配置 MySQL.65 4.5.1 安装 MySQL.65 4.5.2 MySQL 基本操作.67 4.5.3 安装 PyMySQL.68 4.5.4 在 Django 中配置 MySQL.69 4.5.5 MySQL 管理工具.72 第 5 章 Django 模板.73 5.1 Django-bootstrap3.73 5.2 发布会管理.74 5.2.1 发布会列表.74 5.2.2 搜索
14、功能.78 5.3 嘉宾管理.79 5.3.1 嘉宾列表.80 5.3.2 分页器.83 5.4 签到功能.87 5.4.1 添加签到链接.87 5.4.2 签到页面.88 5.4.3 签到动作.91 5.5 退出系统.93 第 6 章 Django 测试.95 6.1 unittest 单元测试框架.95 6.1.1 单元测试框架.95 6.1.2 编写单元测试用例.96 6.2 Django 测试.100 6.2.1 一个简单的例子.100 VIII Web 接口开发与自动化测试基于 Python 语言 6.2.2 运行测试用例.102 6.3 客户端测试.104 6.3.1 测试首页.1
15、04 6.3.2 测试登录动作.105 6.3.3 测试发布会管理.107 6.3.4 测试嘉宾管理.108 6.3.5 测试用户签到.109 第 7 章 接口相关概念.111 7.1 分层的自动化测试.111 7.2 单元测试与模块测试.112 7.3 接口测试.114 7.3.1 接口的分类.115 7.3.2 接口测试的意义.116 7.4 编程语言中的 Interface.117 7.4.1 Java 中的 Interface.117 7.4.2 Python 中的 Zope.interface.119 第 8 章 开发 Web 接口.121 8.1 为何要开发 Web 接口.121
16、8.2 什么是 Web 接口.124 8.2.1 HTTP.125 8.2.2 JSON 格式.128 8.3 开发系统 Web 接口.129 8.3.1 配置接口路径.129 8.3.2 添加发布会接口.130 8.3.3 查询发布会接口.132 8.3.4 添加嘉宾接口.133 8.3.5 查询嘉宾接口.135 8.3.6 发布会签到接口.136 8.4 编写 Web 接口文档.138 目 录 IX 第 9 章 接口测试工具介绍.143 9.1 Postman 测试工具.143 9.2 JMeter 测试工具.146 9.2.1 安装 JMeter.146 9.2.2 创建测试任务.147 9.2.3 添加接口测试.151 9.2.4 添加断言.153 9.3 Robot Framework 测试框架.154 9.3.1 环境搭建.155 9.3.2 基本概念与用法.157 9.3.3 接口测试.160 第 10 章 接口自动化测试框架.165 10.1 接口测试工具的不足.165 10.2 Requests 库.166 10.2.1 安装.167 10.2.2 接口测试.167