虫师原创----http://fnng.cnblogs.com
Python Web 接口开发与测试
(电子版)
作者:虫师
1
目录
虫师原创----http://fnng.cnblogs.com
第一章 Python 学习必知....................................................................................................................................................8
1.1 Python2.x 与 Python3.x 选择............................................................................................................................8
1.2 Python 的安装....................................................................................................................................................8
1.2.1 Window 下安装 Python..........................................................................................................................9
1.2.2 安装 Python2.x 和 Python3.x 两个版本..............................................................................................10
1.2.3 ‘python’不是内部或外部命令......................................................................................................... 12
1.3 安装 Python 扩展库........................................................................................................................................ 13
pip 安装扩展库.....................................................................................................................................13
1.3.1
1.3.2
tar.gz 文件安装.....................................................................................................................................16
1.3.3 whl 文件安装........................................................................................................................................16
1.4 Python 开发工具选择..................................................................................................................................... 16
1.4.1 Python IDLE......................................................................................................................................... 16
1.4.2 Sublime Text3....................................................................................................................................... 18
1.4.3 PyCharm................................................................................................................................................19
1.4.4 Atom......................................................................................................................................................20
1.5 Python 程序报错不要慌................................................................................................................................. 21
1.5.1 缩进错误...............................................................................................................................................21
1.5.2 引包错误...............................................................................................................................................22
1.5.3 编码错误...............................................................................................................................................23
1.5.4 学会分析错误.......................................................................................................................................23
本章小节...................................................................................................................................................................25
第二章 Django 入门......................................................................................................................................................... 26
2.1 Django 开发环境.............................................................................................................................................26
2.1.1 Windows 安装 Django..........................................................................................................................26
2.1.2 Ubuntu 下安装 Django.........................................................................................................................27
2.2 开始第一个 demo............................................................................................................................................28
2.2.1、创建项目与应用...................................................................................................................................28
2.2.2、运行项目...............................................................................................................................................32
2.2.3、Hello Django!..................................................................................................................................... 34
2.2.4、使用模板...............................................................................................................................................37
2.3 Django 工作流................................................................................................................................................. 37
2.3.1、URL 组成..............................................................................................................................................38
2.3.2、urls 的配置............................................................................................................................................39
2.3.3、views 视图............................................................................................................................................ 40
2.3.4、templates 模板...................................................................................................................................... 41
2.4 MTV 开发模式................................................................................................................................................41
第三章 Django 视图........................................................................................................................................................ 43
3.1 来写个登录......................................................................................................................................................43
3.1.1、GET 与 POST 请求.............................................................................................................................. 44
3.1.2、处理登录请求.......................................................................................................................................47
3.1.3、登录成功页...........................................................................................................................................49
3.2 Cookie 和 Session............................................................................................................................................51
3.2.1、Cookie 的使用...................................................................................................................................... 51
3.2.2、Session 的使用......................................................................................................................................53
3.3 Django 认证系统.............................................................................................................................................55
3.3.1、登录 Admin 后台..................................................................................................................................55
2
虫师原创----http://fnng.cnblogs.com
3.3.2、引用 Django 认证登录.........................................................................................................................56
3.3.3、关上窗户...............................................................................................................................................57
第四章 Django 模型....................................................................................................................................................... 59
4.1 设计系统表......................................................................................................................................................59
4.2
admin 后台管理...............................................................................................................................................62
4.3 基本数据访问..................................................................................................................................................65
4.3.1、插入数据...............................................................................................................................................66
4.3.2、查询数据...............................................................................................................................................67
4.3.3、删除数据...............................................................................................................................................69
4.3.4、更新数据...............................................................................................................................................69
4.4 SQLite 管理工具............................................................................................................................................. 70
4.4.1、SQLiteManager.....................................................................................................................................70
4.4.2、SQLiteStudio.........................................................................................................................................71
4.5 配置 MySQL....................................................................................................................................................72
4.5.1、安装 MySQL.........................................................................................................................................72
4.5.2、安装 PyMySQL.................................................................................................................................... 75
4.5.3、Django 配置 MySQL............................................................................................................................76
4.5.4、MySQL 管理工具.................................................................................................................................79
第五章 Django 模板........................................................................................................................................................ 81
5.1 Django-bootstrap3............................................................................................................................................81
5.2 发布会管理......................................................................................................................................................82
5.2.1、发布会列表...........................................................................................................................................82
5.2.2、发布会搜索...........................................................................................................................................86
5.3 嘉宾管理..........................................................................................................................................................88
5.3.1、嘉宾列表...............................................................................................................................................88
5.3.2、分页器...................................................................................................................................................92
5.4 签到功能..........................................................................................................................................................95
5.4.1、添加签到链接.......................................................................................................................................96
5.4.2、签到页面...............................................................................................................................................97
5.4.3、签到动作...............................................................................................................................................99
5.5 退出系统........................................................................................................................................................102
第六章 Django 测试...................................................................................................................................................... 104
6.1
unittest framework......................................................................................................................................... 104
6.2 Testing in Django........................................................................................................................................... 108
6.2.1、A simple example................................................................................................................................108
6.2.2、Run test case........................................................................................................................................111
6.3 The test views.................................................................................................................................................112
6.3.1、Test Index............................................................................................................................................ 113
6.3.2、Test Login action.................................................................................................................................114
6.3.3、Test Event Manage..............................................................................................................................115
6.3.4、Test Guest Manage..............................................................................................................................116
6.3.5、Test User Sign..................................................................................................................................... 117
第七章 接口相关概念...................................................................................................................................................120
7.1 分层的自动化测试........................................................................................................................................120
7.2 单元测试与模块测试....................................................................................................................................121
7.3 接口测试........................................................................................................................................................122
7.3.1 接口的分类.........................................................................................................................................123
7.3.2 接口测试的意义.................................................................................................................................124
7.4 编程语言中的 Interface................................................................................................................................ 125
7.4.1、Java 中的 Interface............................................................................................................................. 125
3
虫师原创----http://fnng.cnblogs.com
9.2
7.4.2、Python 中的 Zope.interface................................................................................................................128
第八章 开发 Web 接口..................................................................................................................................................130
8.1 HTTP 协议与 JSON...................................................................................................................................... 132
8.1.1、HTTP 协议..........................................................................................................................................132
8.1.2、JSON................................................................................................................................................... 135
8.2 什么是 Web 接口...........................................................................................................................................136
8.3 开发系统的 Web 接口.................................................................................................................................. 137
8.3.1、发布会添加接口.................................................................................................................................137
8.3.2、发布会查询接口.................................................................................................................................139
8.3.3、嘉宾添加接口.....................................................................................................................................140
8.3.4、嘉宾查询接口.....................................................................................................................................142
8.3.5、嘉宾签到接口.....................................................................................................................................143
8.3.6、配置接口路径.....................................................................................................................................145
8.4 编写 Web 接口文档.......................................................................................................................................146
第九章 接口测试工具介绍...........................................................................................................................................151
9.1 Poster 与 Postman..........................................................................................................................................151
9.1.1、Poster...................................................................................................................................................151
9.1.2、Postman...............................................................................................................................................154
Jmeter 测试工具............................................................................................................................................ 156
9.2.1、安装 Jmeter......................................................................................................................................... 156
9.2.2、添加 HTTP 接口测试.........................................................................................................................157
9.2.3、添加 GET/POST 请求........................................................................................................................160
9.2.4、添加断言.............................................................................................................................................162
9.3 Robot Framework 测试框架......................................................................................................................... 163
9.3.1、环境搭建.............................................................................................................................................163
9.3.2、基本概念与用法.................................................................................................................................166
9.3.3、接口测试.............................................................................................................................................169
本章小节.................................................................................................................................................................173
第十章 接口测试框架设计...........................................................................................................................................174
10.1、接口测试工具的不足..................................................................................................................................174
10.2、接口自动化测试设计..................................................................................................................................175
10.3、Request 库....................................................................................................................................................176
10.3.1、安装与例子.......................................................................................................................................176
10.3.2、接口测试...........................................................................................................................................177
10.3.2、接口自动化测试...............................................................................................................................178
10.4 接口自动化测试框架实现..........................................................................................................................179
10.4.2、框架结构介绍...................................................................................................................................179
10.4.1、数据库配置.......................................................................................................................................180
10.4.3、代码实现...........................................................................................................................................181
第十一章 接口的安全机制...........................................................................................................................................190
11.1 用户认证......................................................................................................................................................190
11.1.1、开发带 Auth 接口.............................................................................................................................191
11.1.2、编写接口文档...................................................................................................................................194
11.1.3、测试接口...........................................................................................................................................194
11.2 数字签名......................................................................................................................................................196
11.2.1、开发接口...........................................................................................................................................197
11.2.2、编写接口文档...................................................................................................................................200
11.2.3、编写接口用例...................................................................................................................................201
11.3 接口加密......................................................................................................................................................203
4
虫师原创----http://fnng.cnblogs.com
12.3
11.3.1、PyCrypto 库.......................................................................................................................................203
11.3.2、AES 加密接口开发.......................................................................................................................... 206
11.3.3、编写接口文档...................................................................................................................................212
11.3.4、补充接口测试用例...........................................................................................................................214
本章小节.................................................................................................................................................................216
第十二章 Web Service...................................................................................................................................................217
12.1 Web Service 相关概念.................................................................................................................................217
12.2 Web Service 开发与调用............................................................................................................................ 226
12.2.1、suds-jurko 调用接口.........................................................................................................................226
12.2.2、spyne 开发接口................................................................................................................................ 231
Jmeter 测试 SOAP 接口..............................................................................................................................234
第十三章 REST............................................................................................................................................................. 236
13.1 RPC 与 REST.............................................................................................................................................. 236
13.2 Django-REST-Framework........................................................................................................................... 238
13.2.1、创建简单的 API............................................................................................................................... 239
13.2.2、添加接口数据...................................................................................................................................243
13.2.3、测试接口...........................................................................................................................................245
13.3 集成发布会系统 API.................................................................................................................................. 246
13.3.1、添加发布会 API............................................................................................................................... 246
13.3.2、测试接口...........................................................................................................................................250
soapUI 测试工具......................................................................................................................................... 251
13.4.1、soapUI 安装...................................................................................................................................... 251
13.4.2、创建 SOAP 测试项目...................................................................................................................... 252
13.4.3、创建 REST 测试项目.......................................................................................................................254
13.4
5
虫师原创----http://fnng.cnblogs.com
前言
为什么学习本书:
是否想学习 web 开发而找不到很好的入门教程。
是否想做一个漂亮的网站出来炫耀。
是否很想知道当你点击一个按钮后,程序到底经过哪些过程把你想要的页面展现在你面前。
是否想告诉别人,不就是开发嘛,我也会。
是否想知道接口到底是什么,如何对它进行测试。
为什么是 Django?
我们总是很难去决定一件事情。比如,我到底该学 Java 呢还是 C# 呢? 到底测试的工资高还是开发的
高?我学习了 Python 之后,想学习 web 开发,是 Django 还是 Flask 好学、强大和灵活?
搞 Java 开发的老程序员会告诉你,他只需要几周时间就可以学会用 C#开发程序。反之也是一样。一直
用 Flask 写 web 的应用同学有一天突然想换成 Django 来开发 web 应用,结果看了一下 Django 的文档就开始写
代码了。
好吧!选择总会有理由,我的理由很简单,只是因为 Django 资料更丰富,当遇到了问题更容易找到答案。
为什么是接口测试?
接口常被开发人员挂在嘴边,在开发过程中无处不在,但对于测试人员来说,它又如此朦胧,无形无色
无味,难以触碰。但它到底是什么?如何对它进行测试?一直是困扰许多测试新手的问题。之所以看不清接
口是什么,主要是因为我们不了解应用是如何被开发出来的。
所以,对于想学接口测试的同学,我都建议他们学习一下 web 开发,当然,我们目的不是想抢程序员的
饭碗,如果,你愿意,在学完本书后也未尝不可。
时间在哪里?
不要总是想着,等我有时间了可以去好好的学学 xx,时间是挤出来的。不要只停留在想上面,从现在开
始动手开始学习吧。
2016 年 5 月
虫师
6
虫师原创----http://fnng.cnblogs.com
更新:
新的版本加量不少,前面添加 Python 基础,主要帮助新手在初次接触 Python 时一些基础问题的解决。
最后添加了 Web Service 接口开发与测试与接口测试工具介绍。Web Service 一章详细介绍了各种相关概念,
让你真正理清什么是 Web Service ,并了解它的开发与测试。接口测试工具介绍,满满的干货。瞬间让你学会
主流接口测试工具的使用。
2016 年 6 月
虫师
更新:
将各个章节散乱的例子(个人博客、图书管理、投票系统)全部替换,统一使用发布会签到系统,并且
作为一个较为完整的项目包括前端和后台,包括项目接口开发与测试用例,各种安全的接口开发与测试。以
及接口测试框架。
更新:
2016 年 8 月
虫师
整体上这一版变动不大,主要改动在 6~13 章,第 6、7 章部分概念重新解释。删除第 9 章 Requests 的使
用,请读者参考官方文档学习。重写了 Robot Framework 的使用,最后,增加了 soapUI 工具的简单使用。
2016 年 10 月
虫师
更新:
经过一个多月的改错,全书的错误减少了很多。电子版完结。除了错别字外,不再改动或添加任何内容。
2016 年 11 月
虫师
7
第一章 Python 学习必知
虫师原创----http://fnng.cnblogs.com
本书中所介绍的技术是以 Python 编程语言为基础的,所以,在阅读本书之前要求读者具备一定的 Python
语言编程能力。从我个人学习 Python 的经历,以及帮助别人解答 Python 问题的经历看来,对于初学 Python
的人来说,遇到的大多问题并不是 Python 的语法,如果读者稍有编程语言基础,那么将会很容易就能学会
Python 的语法,而且对于这方法的学习,我们可以轻松的找到大量的文章、书籍和视频教程等。然而,他们
问的更多的问题是 Python 版本的选择、环境的设置、第三方扩展库的安装、IDE 的选择、以及遇到程序报错
之后的解决等。那么,本章将试着帮你弄清这些问题,使你后续 Python 学习过程变得更加顺畅。
1.1 Python2.x 与 Python3.x 选择
对于想要学习 Python 的同学来说首先要面对的就是版本选择的问题,到底是学习 Python2.x 还是学习
Python3.x?之所以会有这样的疑问主要归结于 Python 语言发展的历史遗留问题导致。
Python 语言早在 1989 由 Guido van Rossum 开发,第一个公开发行版发行于 1991 年。因为早期的 Python
版本在基础方面设计存在着一些不足之处。在 2008 年的时候 Guido van Rossum 又重新开发 Python 3.0,Python3
在设计的时候很好地解决了这些遗留问题,并且在性能上也有了一定的提升,然而 Python3 带来的最大的问题
就是不完全向后兼容,当时向后兼容的版本是 Python2.6。因为经过多年的发展,Python 已经是一门非常成熟
的语言了,大量的项目在使用 Python 语言运行,围绕着 Python 语言有着极其丰富的类库。无法一下子就让所
有项目和类库都转到 Python3.0 上面。所以,两个版本就进入了长期并行开发和维护的状态。
正是由于官方对 Python2.x 纵容的态度,致使到目前为止,Python2 的使用者依然过半。从近两年来看,
官方的态度有所改变,Python2.x 的开发进入消极状态,版本更新速度明显要比 Python3.x 慢得多,而且不再加
入新的特性,以维护为主。所以,这将非常有利于 Python3 的发展,那么对于新手来说,我建议读者直接学习
Python3.x,因为 Python3.x 代表了 Python 发展的未来;而且目前主流的库基本都已经支持了 Python3.x,不支
持的库也在积极的向 Python3.x 迁移。那么,在本书中除非特别声明,否则默认情况所有代码将在 Python3.x
下运行。
注:Python3.x 和 Python2.x ,其中 x 表示小版本号。例如,当前 Python 最新的两个版本分别为
Python3.5.2 和 Python2.7.12。
1.2 Python 的安装
Python 的安装相当简单,我相信这这难不倒你,但是仍然有一些细节需要注意。
8