接口自动化测试-慕课网
目录
接口自动化测试用例设计
Excel接口测试用例访问
MySQL接口测试用例访问
PyTest测试框架
接口自动化测试必备技能-HTTP协议
requests库实现接口请求
接口自动化测试用例设计
目录
- 接口测试的用例设计思路
- 接口自动化测试用例设计要点
- 接口自动化测试用例书写
接口测试的用例设计思路
思考:接口测试,测试的是什么?
根据接口的参数,设计输入数据,验证接口的返回值
所以,其测试范围就是围绕着参数进行用例的设计 , 就是准备各种各样的数据,对接口的返回值进行验证
- 正确的值
- 边界的值
- 错误的值
- 根据场景设计的值
- 异常的值
- …..
最终,只是看不见页面的黑盒用例设计方法 , 但是,我们自己要尽量根据接口要产生画面感
接口自动化测试用例设计要点
尽量让人和代码都能够看懂且用得上 , 但是,很多时候我们做不到那就只能分开
用例编号
请求地址
用例标题
输入数据(分字段)
请求接口类别
数据格式
请求方式
是否需要登录
期望结果
接口自动化实施的前提 :
- 接口已趋于稳定
接口自动化测试用例书写

pandas安装与使用
安装与使用
- 终端命令 :
pip install pandaspip install openpyxl
1 | # 导入模块 |
Excel数据的访问
获取工作表数据
1 | # 导入模块 |
获取指定工作表数据
1 | # 导入模块 |
获取到的数据的类型
1 | # 导入模块 |
获取指定列数据
1 | # 导入模块 |
获取多列数据
1 | # 导入模块 |
获取指定列指定行数据
1 | # 导入模块 |
获取指定行数据
1 | # 导入模块 |
行与列数据的遍历访问
1 | # 导入模块 |
数据筛选访问和解析
1 | # 导入模块 |
MySQL数据库接口测试用例访问
企业中测试团队工作场景
- 多人共同测试同一个项目
- 同事之间的工作有不同的分工和交叉
Excel存储测试用例的优势 | 劣势
优势 :
- 数据操作方便
劣势 :
- 团队中数据不易同步
- 数据复用性差
MySQL存储测试用例的优势 | 劣势
- 优势
- 数据同步与共享方便
- 数据复用性强,用例留有痕迹
- 劣势
- 有一定的技术门槛
MySQL测试用例管理思路
测试用例的书写
- 可以与Excel测试用例字段一致
- 但是,字段名称要使用英文,这样更符合规范
Excel测试用例数据导入
- 在 Navicat 中 , 在 数据表-右键 - 导入向导 , 再按提示点下一步导入即可
结合Pandas操作MySQL
1 | # 导入模块 |
PyTest测试框架
PyTest基本介绍与安装
PyTest基本介绍
- PyTest是Python的一个第三方的单元测试库
- 自动识别测试模块和测试函数
- 支持非常丰富的断言(assert)语句
PyTest中的使用约束
PyTest中的使用约束 :
测试文件的文件名必须以
test_开头或以_test结尾测试类必须以
Test开头测试的函数名必须以
test_开头测试类里面不能使用
init方法
PyTest的安装
- PyTest的安装 :
- 终端命令 :
pip install pytest
- 终端命令 :
PyTest的案例
1 | # 导入模块 |
PyTest中的断言
1 | # 导入模块 |
PyTest中的参数化
PyTest中的参数化写法
1 | # 导入模块 |
读取数据库测试用例
1 | # 导入模块 |
PyTest中的组织管理
- 在pytest当中,测试方法执行的顺序,默认是从上到下
- 我们使用
pytest.mark.run进行测试函数执行顺序的标记时 , 需要先安装 pytest_ordering- 终端命令 :
pip install pytest_ordering
- 终端命令 :
- 在优先级方面 pytest.mark.first 是最高优先级
- 如果我们在进行标记顺序时,假设我们采用了数字的形式,那么就都用数字
1 | # 导入模块 |
PyTest的前置与后置操作
前置函数与后置函数
1 | # 导入模块 |
前置类方法和后置类方法
1 | # 导入模块 |
Fixture
Fixture介绍
- Fixture 是pytest最大的优势之一
- Fixture 可以将测试的复杂需求简单化、组件化
- Fixture 为测试提供了已定义的、可靠的和一致的上下文
- Fixture 定义了构成测试准备阶段的步骤和数据
1 | # 导入模块 |
多Fixture应用
1 | # 导入模块 |
conftest的统一配置
- conftest.py
1 | # 导入模块 |
- test_xxx.py
- 会自动加载上面的 conftest 文件
1 | # 导入模块 |
作用域控制与自动运行
1 | # 导入模块 |
使用fixture实现参数化
1 | # 导入模块 |
使用fixture实现测试控制
1 | # 导入模块 |
集成allure生成测试报告
环境安装
- 1, allure 下载地址 : https://github.com/allure-framework/allure2/releases
- 将解压后的文件夹复制到项目根目录中即可
- 2, 安装 JDK
- 安装略…
- 3, 配置环境变量
- 配置 JDK 环境变量过程略…
- 配置 allure 环境变量
- 将项目目录中的 allure 目录中的 bin 目录,配置到环境变量的 path 变量中
- 在终端输入
allure --version, 出现版本号即为配置成功
生成测试报告
安装 allure :
- 终端命令 :
pip install allure-pytest
- 终端命令 :
终端执行命令 :
pytest .\test_513_生成测试报告.py --alluredir ./result, 生产测试数据,存储于当前目录下的 result 目录中终端执行命令 :
allure generate ./result -o ./report_allure, 即可在 report_allure 目录中生成测试报告
HTTP协议
HTTP协议简介
- HTTP协议,中文名称为超文本传输协议
- 它是一个应用层的协议,是由请求和响应构成
- 其典型的应用场景就是浏览器和服务器之间进行数据传输
HTTP协议的基本工作流程

HTTP协议状态码解析
- 5 种状态分类 :
1**:服务器收到请求,需要请求者继续执行操作**2**:操作被成功接收并处理3**:请求重定向,需要进一步的操作以完成请求4**:客户端错误,请求包含语法错误或无法完成请求5**:服务器错误,服务器在处理请求的过程中发生了错误
HTTP协议常见的状态码
- 200:请求成功
- 400:客户端请求的语法错误,服务器无法理解
- 401:请求要求用户的身份认证
- 403:服务器理解请求客户端的请求,但是拒绝执行此请求
- 404:服务器无法根据客户端的请求找到资源
- 405:客户端请求中的方法被禁止
- 500:服务器内部错误,无法完成请求
- 503:由于超载或系统维护,服务器暂时的无法处理客户端的请求
- 505:服务器不支持请求的HTTP协议的版本,无法完成处理
HTTP协议请求头解析
- Accept:告诉服务器自己接受什么数据类型
- Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法
- Accept-Language:浏览器声明自己接收的语言
- Connection:表示是否需要持久连接
- Cookie:保存客户端部分信息发送到服务端供服务端验证和使用
- Host:客户端指定自己想访问的WEB服务器的域名/IP地址和端口号
- jwt_token:代表了客户端向服务端请求时带有什么验证信息
- Origin:代表了客户端的请求请求来自于哪个站点
- Referer:浏览器向 WEB 服务器表明自己是从哪个网页URL获得点击当前请求中的网址/URL
- User-Agent:浏览器表明自己的身份(是哪种浏览器)
- X-Requested-With:标识着请求是同步请求还是异步请求
- Cache-Control:指定请求和响应遵循的缓存机制,决定了如果管理和使用缓存
HTTP协议响应头解析
- Access-Control-Allow-Credentials:请求的响应是否可以暴露于该页面,当true值返回时它可以被暴露
- Access-Control-Allow-Origin:服务器端允许进行跨域资源访问的来源域
- Content-Type:服务端告诉客户端响应体的内容类型
- Date:创建响应数据(报文)的日期时间,就是消息发送的时间
- Transfer-Encoding:传输编码,chunked是分块传输的意思
- Vary:服务器用这个头的内容告诉缓存服务器,在什么条件下才能用本响应所返回的对象响应后续的请求
- Allow:服务器支持哪些请求方法(如GET、POST等)
- Server:服务器表明自己是什么软件及版本等信息
Cookie和Session
什么是Cookie
- Cookie是一些网站为了识别用户和跟踪会话而存储在用户本地终端中的文本数据
Cookie的工作流程

什么是Session
- Session是指会话控制,是保存在服务器上一种机制,当客户端访问服务器的时候,服务器会把信息以某种形式记录在服务器上,恰恰和Cookie相反
Session的工作流程

Cookie和Session的区别
- 1、存放位置不同,Cookie放在客户端,Session存在服务端
- 2、存放位置不同导致安全性不同,Cookie存在客户端中,用户可以任意分析Cookie,而Session在服务端,用户分析不到
- 3、数据存储大小不同,Cookie保存的数据不能超过4KSession存在服务端,所以没有限制
- 4、性能使用情况不同,当访问过多时Session比较占用服务器资源,而Cookie不会
requests接口请求
requests库介绍
- requests是一款非常火爆且常用的Python三方库
- 能够实现HTTP协议的各种请求方法
- 使用简单易上手
requests库的安装
- 终端命令 :
pip install requests
requests发送get接口请求
- 注意要开启后端服务
1 | # 导入模块 |
requests发送post接口请求
1 | # 导入模块 |
requests发送请求头信息
1 | # 导入模块 |
接口自动化测试项目实战
前言
- 思考的问题
- 如何实现单个接口请求的测试
- 如何实现登录的Excel文件测试用例参数化
- 如何实现登录的MySQL数据库测试用例参数化
- 添加购物车的登录状态该如何处理
- 测试用例中的字段该如何使用
- 如何优雅的实现添加购物车的测试用例
读取数据库数据
- ./utils/mysql_utils.py
1 | # 操作数据库的方法 |
- ./test_login_case.py
1 | # 使用数据库原生集合fixture进行参数化 |
测试代码开发
1 | # 使用数据库原生集合fixture进行参数化 |
Pandas实现登录的自动化测试
- ./utils/mysql_utils.py
1 | # 操作数据库的方法 |
- ./test_login_case.py
1 | # 使用数据库原生集合fixture进行参数化 |
Excel参数化实现登录自动化测试
- ./utils/excel_utils.px
1 | import pandas as pd |
- ./test_login_case.py
1 | # 使用数据库原生集合fixture进行参数化 |
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自蜗牛浪迹天涯
