目录
第1章 Python编程环境 1
1.1 为什么要学习Python 2
1.2 Python的版本选择与安装 7
1.2.1 Python的版本选择 7
1.2.2 Python的安装与配置 10
1.3 Python模块的安装方法 14
1.4 PyCharm的安装 17
1.5 使用PyCharm完成第一个Python项目 20
1.6 本章小结和习题 24
1.6.1 本章小结 24
1.6.2 习题 24
第2章 Python编程基础知识 26
2.1 Python自带IDE——IDLE 27
2.2 Python的相关术语 29
2.2.1 变量 29
2.2.2 数据类型 31
2.2.3 数据类型转换 36
2.2.4 缩进 37
2.2.5 内置函数 38
2.3 列表 39
2.3.1 创建列表 40
2.3.2 通过索引获取列表元素 40
2.3.3 通过切片获取列表元素 41
2.3.4 添加列表元素 43
2.3.5 删除列表元素 44
2.3.6 列表元素计数 46
2.3.7 列表元素的索引位置 48
2.3.8 列表长度及反转 49
2.4 元组 50
2.4.1 创建元组 50
2.4.2 通过索引获取元组元素 50
2.4.3 通过切片获取元组元素 51
2.4.4 元组元素计数 51
2.4.5 元组元素的索引位置 52
2.4.6 删除整个元组 52
2.5 字典 53
2.5.1 创建字典 53
2.5.2 获取字典元素 55
2.5.3 修改字典 56
2.5.4 字典元素计数 56
2.5.5 删除字典或其元素 57
2.6 集合 58
2.6.1 创建集合 58
2.6.2 获取集合元素 60
2.6.3 添加集合元素 60
2.6.4 修改集合 61
2.6.5 集合元素计数 62
2.6.6 删除集合或其元素 62
2.7 常用运算符 63
2.7.1 算术运算符 63
2.7.2 逻辑运算符 66
2.7.3 比较运算符 67
2.7.4 赋值运算符 67
2.7.5 位运算符 68
2.8 常规语句应用基础 69
2.8.1 for循环语句 69
2.8.2 while循环语句 70
2.8.3 if...else条件语句 71
2.8.4 break语句 72
2.8.5 continue语句 72
2.8.6 模块导入 72
2.8.7 函数 75
2.8.8 断言 79
2.8.9 局部变量和全局变量 79
2.8.10 单行注释与多行注释 80
2.9 语法错误及异常处理 81
2.9.1 语法错误 81
2.9.2 异常 82
2.9.3 通过try...except异常捕获 84
2.9.4 通过try...except...else...finally异常捕获 85
2.9.5 抛出异常 86
2.10 多线程处理 87
2.10.1 __name__ == "__main__" 87
2.10.2 线程 89
2.10.3 创建单个线程 90
2.10.4 创建多个线程 90
2.10.5 守护线程 91
2.10.6 阻塞线程 95
2.11 类和对象 96
2.11.1 对象的思想 96
2.11.2 对象(类)的概念 96
2.11.3 类中的self 98
2.11.4 构造函数与析构函数 99
2.11.5 类的继承 100
2.12 字符串相关操作 102
2.12.1 转换为字符串类型 102
2.12.2 字符串的拼接 103
2.12.3 字符串的截取 104
2.12.4 字符串的替换 105
2.12.5 字符串的位置判断 106
2.13 文件的相关操作 106
2.13.1 文本文件的操作 107
2.13.2 Excel文件的操作 109
2.13.3 JSON格式 112
2.14 本章小结和习题 114
2.14.1 本章小结 114
2.14.2 习题 115
第3章 单元测试框架UnitTest 116
3.1 UnitTest 117
3.2 UnitTest的应用 117
3.2.1 学习UnitTest前的准备 117
3.2.2 测试用例设计 119
3.2.3 测试用例 120
3.2.4 测试固件 122
3.2.5 测试套件 122
3.2.6 测试运行器 125
3.3 本章小结和习题 128
3.3.1 本章小结 128
3.3.2 习题 129
第4章 接口测试的基础知识 130
4.1 搭建案例的相关环境 131
4.1.1 开启Internet信息服务 131
4.1.2 编写页面代码 132
4.1.3 编写JavaScript文件 132
4.1.4 创建虚拟目录 133
4.1.5 部署及访问 134
4.1.6 页面访问过程 134
4.2 网络模型 135
4.2.1 OSI模型 135
4.2.2 TCP/IP模型 137
4.3 HTTP 137
4.3.1 通过浏览器捕获HTTP 137
4.3.2 请求和响应过程 140
4.3.3 封装HTTP请求的内容 141
4.3.4 封装HTTP响应的内容 144
4.3.5 HTTP的无状态特点 147
4.4 缓存 147
4.4.1 查看浏览器缓存 147
4.4.2 设置缓存过期时间 149
4.4.3 缓存处理机制 151
4.4.4 常见的缓存策略 153
4.5 Cookie 155
4.6 会话 156
4.7 XML 158
4.8 JSON 159
4.9 本章小结和习题 160
4.9.1 本章小结 160
4.9.2 习题 160
第5章 接口测试环境的搭建 161
5.1 创建虚拟环境 162
5.1.1 通过virtualenv创建虚拟环境 162
5.1.2 通过virtualenvwrapper创建虚拟环境 165
5.1.3 安装Django 167
5.1.4 安装Django REST Framework 169
5.1.5 安装Django REST Framework JWT 169
5.2 案例1:Django接口测试环境的搭建 170
5.2.1 新建项目目录 170
5.2.2 创建项目 170
5.2.3 创建应用 171
5.2.4 查看项目结构 171
5.2.5 注册应用 172
5.2.6 编写视图代码 172
5.2.7 实现URL映射 173
5.2.8 运行服务 173
5.2.9 访问接口 174
5.2.10 原理分析 174
5.3 案例2:基于模型的Django接口测试环境的搭建 175
5.3.1 创建Django项目 176
5.3.2 PyCharm中的设置 177
5.3.3 检查应用注册信息 177
5.3.4 运行服务器 178
5.3.5 建立模型 179
5.3.6 生成数据库变更文件 180
5.3.7 生成数据库和数据表 180
5.3.8 查看数据库 181
5.3.9 编写视图代码 182
5.3.10 实现URL映射 183
5.3.11 运行服务器 184
5.3.12 访问接口 184
5.3.13 Django后台管理 184
5.4 案例3:Django REST Framework接口测试环境的搭建 186
5.4.1 新建应用 186
5.4.2 注册应用 187
5.4.3 建立模型 187
5.4.4 模型序列化 188
5.4.5 变更数据 188
5.4.6 编写视图代码 189
5.4.7 实现URL映射 191
5.4.8 运行服务器 191
5.4.9 访问接口 192
5.4.10 实现POST请求 192
5.4.11 实现GET请求 193
5.4.12 实现PUT请求 194
5.4.13 实现DELETE请求 195
5.4.14 原理分析 195
5.5 案例4:实现令牌用户的认证 196
5.5.1 新建应用 197
5.5.2 引入用户认证机制 197
5.5.3 实现序列化 198
5.5.4 编写视图代码 198
5.5.5 URL设置 199
5.5.6 改变数据库 200
5.5.7 访问用户列表 200
5.5.8 通过Postman模拟请求 202
5.5.9 获取令牌 202
5.5.10 模拟身份认证 203
5.6 案例5:实现JWT用户的认证 204
5.6.1 启用Django REST Framework中JWT的配置 205
5.6.2 获取URL 206
5.6.3 获取JWT 206
5.6.4 模拟请求 207
5.6.5 过期验证 208
5.7 本章小结和习题 208
5.7.1 本章小结 208
5.7.2 习题 209
第6章 接口测试案例 210
6.1 项目架构的演变 211
6.2 接口测试 213
6.3 接口文档 214
6.3.1 PM2.5查询接口文档 214
6.3.2 腾讯云人脸比对接口文档 216
6.4 接口测试 217
6.4.1 实现接口测试案例 217
6.4.2 接口设计文档 220
6.4.3 设计测试用例 222
6.4.4 编写测试脚本 229
6.5 本章小结和习题 237
6.5.1 本章小结 237
6.5.2 习题 237
第7章 接口Mock的应用 238
7.1 接口Mock技术 239
7.2 关于JSON Server工具的实例 239
7.2.1 JSON Server 239
7.2.2 安装JSON Server 240
7.2.3 关于JSON Server应用的简要说明 242
7.2.4 案例1:向图书中添加数据接口验证 245
7.2.5 案例2:图书数据信息查询接口验证 246
7.2.6 案例3:出版社信息修改接口验证 249
7.2.7 案例4:图书信息删除接口验证 250
7.3 本章小结和习题 251
7.3.1 本章小结 251
7.3.2 习题 251
第8章 接口测试工具 253
8.1 JMeter工具在接口测试中的应用 254
8.1.1 JMeter 254
8.1.2 搭建JMeter的安装环境 254
8.1.3 安装JDK 255
8.1.4 安装JMeter 257
8.1.5 JMeter的录制需求 258
8.1.6 创建线程组 258
8.1.7 添加测试脚本录制器 260
8.1.8 配置证书 262
8.1.9 运行脚本录制器 266
8.1.10 添加监听器 271
8.1.11 添加检查点 272
8.1.12 分析结果 275
8.2 基于JMeter工具的接口测试项目实战 276
8.2.1 火车查询接口 276
8.2.2 火车查询接口测试用例设计 280
8.2.3 首个接口测试用例的JMeter脚本实现 282
8.2.4 首个接口测试用例的JMeter脚本执行与结果分析 284
8.2.5 所有接口测试用例的JMeter脚本实现 287
8.2.6 所有接口测试用例的JMeter脚本执行与结果分析 289
8.3 Postman工具的应用 291
8.3.1 Postman的安装及介绍 291
8.3.2 通过Postman发送请求 293
8.3.3 执行脚本 298
8.3.4 运行测试集合 302
8.4 基于Postman工具的接口测试项目实战 304
8.4.1 接口测试用例的Postman脚本实现 305
8.4.2 接口测试用例的Postman脚本执行与结果分析 312
8.5 本章小结和习题 314
8.5.1 本章小结 314
8.5.2 习题 315
第9章 基于接口的性能测试实战 316
9.1 性能测试的基本概念 317
9.1.1 典型的性能测试场景 317
9.1.2 性能测试的概念及其分类 317
9.1.3 性能测试工具的引入 318
9.1.4 性能测试的基本过程 319
9.2 安装与应用Locust性能测试工具 325
9.2.1 安装Locust性能测试工具 325
9.2.2 接口性能测试需求 326
9.2.3 接口测试的功能性用例设计 331
9.2.4 测试用例的脚本实现(接口功能性验证) 332
9.2.5 接口测试的性能用例设计 334
9.2.6 测试用例的脚本实现 335
9.2.7 Locust中性能测试脚本的两种执行方式 337
9.2.8 Locust分布式压测方法 343
9.2.9 性能测试场景的执行 344
9.2.10 性能测试执行结果分析与总结 348
9.3 本章小结和习题 350
9.3.1 本章小结 350
9.3.2 习题 350
第10章 Python项目持续集成的案例 351
10.1 持续集成 352
10.2 在Gitee上托管代码 352
10.2.1 设置Git用户信息 353
10.2.2 设置SSH公钥 353
10.2.3 在PyCharm中配置Gitee 355
10.2.4 共享项目 357
10.3 Jenkins的安装 358
10.3.1 安装及配置JDK 359
10.3.2 安装Jenkins 360
10.4 Jenkins的配置 362
10.4.1 系统更新 362
10.4.2 插件管理 363
10.4.3 配置Gitee 367
10.5 Jenkins的构建任务 369
10.6 运行构建任务 371
10.7 本章小结和习题 373
10.7.1 本章小结 373
10.7.2 习题 373
第11章 接口自动化测试平台的设计与实现 374
11.1 接口测试面临的一些痛点问题 375
11.2 接口自动化测试平台核心功能设计 375
11.2.1 接口自动化测试平台的引入 375
11.2.2 接口自动化测试平台的投入 377
11.2.3 通过JMeter命令行调用执行的方法 378
11.2.4 通过Postman命令行调用执行的方法 380
11.2.5 测试平台开发综述 385
11.2.6 平台测试用例管理 387
11.2.7 平台测试环境管理 389
11.2.8 平台测试任务执行 390
11.2.9 平台测试结果分析 392
11.2.10 平台测试报告生成 393
11.2.11 平台测试邮件通知 396
11.3 本章小结和习题 397
11.3.1 本章小结 397
11.3.2 习题