接口自动化测试项目实战:Python3.8+Requests+PyMySQL+pyte

接口自动化测试项目实战:Python3.8+Requests+PyMySQL+pyte"

作者:江楚
ISBN:9787302593751
定价:¥59
字数:千字
页数:
出版时间:2021.11.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书采用项目驱动模式,并通过Python库建立起一套基础的、实用的接口自动化测试框架。

本书共分为两部分,第一部分为接口自动化测试基础,包括第1~6章,先带读者部署被测系统,

然后分别讲解 HTTP 请求的发送(Requests 库)、目录及文件的操作(os 库)、日志信息的

记录与输出(logging 库)、数据库的操纵(PyMySQL 库)、pytest 框架的使用等,所用的库

都是设计接口自动化测试框架常用的基础库。第二部分为构建接口自动化测试框架,包括第

7 ~ 9 章,将应用第一部分的基础知识,带读者对 ZrLog 项目设计测试用例、搭建接口自动化

测试框架、实现接口自动化测试框架的持续集成等。

本书不但展示了设计接口自动化测试框架的整个过程,还讲解了设计接口自动化测试框

架所需的基础能力和思维。本书适合接口自动化测试的从业者阅读,也适合相关专业的院校

及各大培训机构作为教材。

前言

前 言

随着市场需求的变化,90% 以上的企业在招聘测试人员时,都会提出接口自动化测试的相关要求,为什么会有这样的现象呢?

目前,软件构架基本上都是前后端分离的,软件的主要功能由服务端提供。从整个软件测试市场来看,大部分的测试人员还是以功能测试和 UI 自动化测试(基于 Web 页面的自动化测试)为主,即以前端的页面测试为主,并不涉及过多的服务端测试(接口测试)。但由于软件开发成本提高,开发周期和迭代周期缩短,仅仅做前端的页面测试已不能满足软件对质量的各项要求。

在软件测试领域,服务端测试的主要对象是由服务端所提供的接口,因此也被称为接口测试。接口测试的优势在于,在一个前端页面的开发还未完成时,测试就可以提前介入。接口测试也分为手工接口测试及接口自动化测试。手工接口测试一般可以通过 posman 或者 jmeter 等接口工具来完成;在接口的功能趋于稳定之后,便可以实现代码级的接口自动化测试及持续集成,这是本书讲述的重点。

与 UI 自动化测试相比,接口自动化测试执行速度快,反馈迅速,可以覆盖更多的场景,可以更快地发现服务端问题。测试工作介入得越早,解决 Bug 的成本越低,产品也会更加稳定,因此接口自动化测试几乎成了 UI 自动化测试人员发展的必经之路。从目前的市场需求来看,接口自动化测试人才在市场中所占比例较低,薪资高,市场缺口巨大。

本书特色

本书选用了 Python 3.8+Requests+PyMySQL+pytest+Jenkins 的组合,这些库和技术都是目前互联网公司大量使用的主流技术。本书将带领读者搭建一个接口自动化测试的框架,并希望读者能将其思想应用到实际的工作之中。本书由浅入深、循序渐进地带领读者在实际项目中完成接口自动化测试实战学习与应用。

配套资源

为便于教学,本书配有框架的源代码、测试用例、视频资源、项目及环境安装包等。配套视频可直接扫描相应章节的二维码观看(手机屏幕小,Pad 观看效果更佳);配套的代码、用例等,请扫描封底“本书资源”二维码下载。

致谢

感谢我善良的母亲,母亲的温柔照亮了整个岁月、整个家;感谢我的父亲,父亲是军人出身,这几十年里不断地提醒和教诲我。有时候特别害怕他们老去的速度,他们把心铺成路,却还怕我们磕了脚。愿我们都懂得感恩,在他们老去之前真真正正地成为他们的骄傲吧。感谢本书的编辑王中英老师,王老师不断地给我鼓励和信心,并对本书提出了很多宝贵的建议。

江 楚

2021 年 7 月

目录

目 录

第一部分 接口自动化测试基础

第 1 章 部署被测系统 ...................................................................... 3

1.1 安装 Docker 服务 ........................................................................ 3

1.2 通过 Docker 部署 Tomcat 服务器 ............................................................ 4

1.3 通过 Docker 部署 MySQL 数据库 ........................................................... 5

1.4 通过 Docker 部署 ZrLog 项目包 .............................................................. 7

第 2 章 使用 Requests 库发送 HTTP 请求...................................... 10

2.1 Requests 库的安装 .......................................................................10

2.2 验证安装结果 .........................................................................................11

2.3 发送一个 GET 请求 ................................................................................12

2.4 发送一个 POST 请求 ..............................................................................13

2.5 携带 Headers 发送请求 ...........................................................................15

2.6 携带 cookies 发送请求 ............................................................................16

2.7 调用 request() 方法发送请求 ..................................................................19

第 3 章 使用 os 库操作及文件................................................. 21

3.1 通过 os 库方法获取平台信息 .................................................................21

3.1.1 使用os.sep()方法获取系统分隔符 ................................................................. 21

3.1.2 使用os.name()方法获取操作系统的平台类型 ............................................... 22

3.1.3 使用os.getcwd()方法获取当前工作 ....................................................... 23

3.2 通过 os 库方法对或文件进行增删改查 ..........................................23

3.2.1 使用os.listdir()方法查询下的文件列表 .................................................. 23

3.2.2 使用os.mkdir()方法创建文件 ................................................................. 25

3.2.3 使用os.rmdir()方法删除一个空 ............................................................. 26

3.2.4 使用os.remove()方法删除指定文件 .............................................................. 26

3.2.5 使用os.rename()方法重命名或文件 ....................................................... 27

3.3 通过 os.path 子模块来操作及文件 ..................................................28

3.3.1 使用__file__特殊成员返回当前文件的全路径 .............................................. 29

3.3.2 使用os.path.dirname()方法返回文件所在 .............................................. 30

3.3.3 使用os.path.abspath()方法返回文件绝对路径 ............................................... 31

3.3.4 组合使用os.path.dirname()方法和os.path.abspath()方法 ............................... 31

3.3.5 使用os.path.join()方法进行路径拼接 ............................................................ 32

3.3.6 使用os.path.exists()方法判断路径是否存在 .................................................. 33

第 4 章 使用 logging 库记录日志信息............................................. 35

4.1 logging 库的基本使用 ............................................................................35

4.1.1 日志等级说明 ................................................................................................ 35

4.1.2 日志的常用函数 ............................................................................................ 36

4.1.3 日志常用的输出格式 ..................................................................................... 36

4.1.4 basicConfig()方法的使用 ............................................................................... 37

4.2 将日志输出到控制台和文件 ...................................................................38

4.2.1 将日志输出到控制台 ..................................................................................... 38

4.2.2 将日志输出到文件 ........................................................................................ 40

4.2.3 将日志同时输出到控制台和文件 .................................................................. 42

4.3 日志记录实例应用 ..................................................................................44

第 5 章 使用 PyMySQL 库操纵数据库............................................ 47

5.1 PyMySQL 库的安装 ...............................................................................47

5.2 验证 PyMySQL 库是否安装成功 ...........................................................47

5.3 连接数据库前的准备工作 ......................................................................48

5.4 通过 PyMySQL 库操纵 Zrlog 数据库实例 .............................................50

5.4.1 通过fetchone()方法读取表中数据 ................................................................. 50

5.4.2 通过execute()方法执行数据回写 .................................................................. 52

5.4.3 通过rollback()方法执行数据回滚.................................................................. 55

5.4.4 通过execute()方法执行数据删除 .................................................................. 58

第 6 章 应用 pytest 测试框架......................................................... 60

6.1 pytest 测试框架的安装 ...........................................................................60

6.2 验证 pytest 是否安装成功 .......................................................................61

6.3 函数和方法的执行规则 ..........................................................................62

6.3.1 函数的执行规则 ............................................................................................ 62

6.3.2 方法的执行规则 ............................................................................................ 64

6.4 参数化的应用 .........................................................................................65

6.4.1 单个参数的参数化应用 ................................................................................. 66

6.4.2 多个参数的参数化应用 ................................................................................. 70

6.5 使用 assert 原生断言...............................................................................75

6.6 pytest 的 setup 和 teardown 方法 ............................................................80

6.6.1 模块级别 ........................................................................................................ 80

6.6.2 函数级别 ........................................................................................................ 82

6.6.3 类级别 ........................................................................................................... 83

6.6.4 类方法级别 .................................................................................................... 85

6.6.5 类方法细化级别 ............................................................................................ 86

6.7 配置文件设置 .........................................................................................88

6.8 生成测试报告 .........................................................................................90

第二部分 构建接口自动化测试框架

第 7 章 设计 ZrLog 项目的测试用例............................................... 95

7.1 设计接口测试用例 ..................................................................................95

7.1.1 提取接口信息并分析 ..................................................................................... 95

7.1.2 根据接口信息设计测试用例 ....................................................................... 101

7.2 测试用例的存储方式 ............................................................................106

7.2.1 建立数据库实例 .......................................................................................... 107

7.2.2 建立主测试用例表 ...................................................................................... 108

7.2.3 建立配置信息表 .......................................................................................... 114

7.2.4 建立执行结果记录表 ................................................................................... 116

7.2.5 通过Excel文件导入测试用例 ...................................................................... 118

第 8 章 设计 ZrLog 项目接口自动化测试框架 ............................... 122

8.1 ZrLog 接口测试框架的环境 .................................................................122

8.2 ZrLog 接口测试框架设计的流程图 ......................................................123

8.3 ZrLog 接口测试框架的层次结构 ..........................................................124

8.4 ZrLog 接口测试框架基础层级设计 ......................................................125

8.4.1 新建ZrLog接口自动化项目 ......................................................................... 125

8.4.2 建立config层并封装settings.py文件 ............................................................ 127

8.4.3 建立report层存储测试报告 ......................................................................... 129

8.4.4 建立log层存储日志信息 .............................................................................. 130

8.4.5 建立utils层存储工具类 ................................................................................ 131

8.4.6 封装日志工具类 .......................................................................................... 131

8.4.7 封装数据库工具类 ...................................................................................... 135

8.4.8 封装测试用例读取工具类 ........................................................................... 138

8.4.9 封装HTTP请求工具类 ................................................................................. 142

8.4.10 新建pytest.ini配置文件 .............................................................................. 147

8.5 ZrLog 接口测试框架核心层级设计 ......................................................148

8.5.1 建立common核心层并封装base.py文件 ...................................................... 148

8.5.2 建立testcase核心层并封装test_run.py文件 ................................................. 152

8.5.3 通过pytest框架运行test _run.py文件 ........................................................... 162

8.5.4 通过log层查看运行日志 .............................................................................. 163

8.5.5 通过report层查看测试报告 ......................................................................... 163

第 9 章 接口自动化的持续集成 .................................................... 165

9.1 持续集成所涉及的环境 ........................................................................165

9.2 持续集成运行的流程图 ........................................................................166

9.3 注册并建立远程仓库 ............................................................................166

9.4 安装并使用 Git 版本管理工具 ..............................................................168

9.4.1 安装Git客户端 ............................................................................................. 168

9.4.2 初始化Git本地仓库 ..................................................................................... 169

9.4.3 建立与远程仓库的信任关系 ....................................................................... 171

9.4.4 通过Git命令提交代码到远程仓库 ............................................................... 173

9.5 通过 Docker 部署 Jenkins 容器 .............................................................176

9.6 通过 Jenkins 容器部署 Python 3.8.5 环境 .............................................177

9.7 通过 Jenkins 构建定时任务,并实现持续集成 ....................................179

9.7.1 访问Jenkins平台 .......................................................................................... 179

9.7.2 建立Jenkins与远程仓库的信任关系 ............................................................ 181

9.7.3 通过Jenkins平台设置定时任务 ................................................................... 184

9.7.4 查看定时任务执行结果 ............................................................................... 187

9.8 通过 Jenkins 安装测试报告插件 ...........................................................188

作者简介

编辑推荐

1. 注重基础思维:阐述主流基础库用法,详解代码

2. 完整的项目实操:项目搭建→用例设计→框架设计→持续集成

3. 丰富的配套资源:文内配套视频+用例代码下载

作者寄语

江楚

软件测试领域的一线讲师,曾就职于文思创新和彩讯科技等上市公司,先后担任高级测试工程师、测试经理等职位。著有畅销书《零基础快速入行入职软件测试工程师》。

电子资料

www.luweidong.cn

下一个