一、接口自动化测试
1.1、简介
接口自动化:使用工具或代码代替人对接口进行测试的技术
测试目的:防止开发修改代码时引入新的问题
测试时机:
开发进行系统测试转测前,可以先进行接口自动化脚本的编写。
开发进行系统测试转测后,优先进行系统测试用例的执行,再进行接口自动化脚本的编写。
1.2、接口自动化测试流程
1、选取自动化测试用例
优先级高(先实现业务流程用例、后实现单接口用例)
功能稳定
2、搭建自动化测试环境
核心技术:
编程语言:python(也可以使用其他语言)
测试框架:pytest
接口请求:requests(python可以发送请求的工具包)
总结
什么时候开展接口自动化测试?
开发提测前,优先开展接口自动化测试。
开发提测后,优先开展系统测试、后开展接口自动化测试。如何开展接口自动化测试?
①选取自动化测试用例
②搭建自动化测试环境
③搭建自动化测试框架
④代码实现自动化
⑤输出测试报告
⑥实现持续集成
二、接口自动化测试框架
2.1、简介
2.2、接口自动化框架设计思路
1、搭建基础框架——定义项目目录结构
2、通用功能类封装——封装通用功能,如:数据库工具类等
3、接口对象封装与调用——封装接口API对象+PyTest框架编写测试脚本
4、测试数据参数化——测试数据ison文件设计、参数化实现
5、用例组织运行——组织测试用例运行,生成测试报告
2.3、搭建基础框架-定义项目目录结构
目录结构如下所示:
三、Requests库
3.1、简介
Requests库:python中的“浏览器”,基于python自带的urllib的HTTP库
安装命令:pip install requests
验证命令:pip show requests
操作步骤:
1、导包
2、发送接口请求
3、查看响应数据
3.2、Requests发送请求
模板:
对应的参数说明:
3.3、Response查看响应
3.4、 案例:登录接口调试-获取图片验证码
需求:使用requests访问验证码接口,并查看响应结果
地址:http://kdtx-test.itheimanet/api/captchalmage
步骤分析:
对应的自动化测试代码
3.5、案例:登录接口调试-登录
需求:使用requests访问登录接口,并查看响应结果。
地址: http://kdtx-test.itheima.net/api/login
请求方法:Post
请求数据:
请求头: Content-Type: application/json
请求体:{"username":"manager","password","123456","code","2","uuid":"验证码接口返回结果中的数据值"}
实现步骤:
1、导包
2、发送接口请求
3、查看响应结果
实现代码:
总结:
如何使用requests发送GET/POST/PUT/DELETE请求?
requests.GET/POST/PUT/DELETE(url)
如何使用requests提交JSON数据?
requests.请求方法(url,json)
如何使用requests设置请求头信息?
requests.请求方法(url, headers)
Response对象常见方法有哪些?
获取响应状态码: response.status_code获取json响应数据: response.json()
获取文本响应数据:response.text
四、接口对象封装
前面存在的问题: 每次登录之前都需要手动复制验证码接口的uuid数据。
思路:
核心思想:代码分层思想
实现登录接口对象封装与调用
4.1、接口对象层
重点:接口封装时,重点是依据接口文档封装接口信息,需要使用的测试数据是从测试用例传递的、接口方法被调用时需要返回对应的响应结果。
代码实现如下:
4.2、测试脚本层
代码实现:
总结:
接口对象封装的核心思想?
分层代码思想
接口对象层(重点关注接口封装调用)
测试脚本层(重点注测试数据准备、断言及业务处理等)
五、合同新增业务
5.1、实现课程添加接口对象封装与调用
接口信息
重点:如何处理课程添加接口对登录接口的依赖?
代码实现如下
接口对象层:
测试脚本层:
5.2、实现合同上传接口对象封装与调用
接口信息:
重点: 如何提交multipart/form-data数据?
Requests处理multipart/form-data,使用files参数
接口对象层:
测试脚本层:
1、导包
2、实例化
3、合同文件放入data
4、 上传合同测试
5.3、实现新增合同接口对象封装与调用
接口对象层:
测试脚本层
总结:
接口自动化代码核心思想?
代码分层思想
接口对象层(重点关注接口封装调用)
测试脚本层(重点注测试数据准备、断言及业务处理等)
代码中如何解决接口之间的数据依赖?
使用python中的变量或属性传递接口依赖数据
Requests中如何处理multipart/form-data 请求数据?
六、 登录接口测试
需求:
完成测试脚本的业务
实现针对响应结果进行断言
测试用例:
测试类:
6.1、数据驱动
定义:以测试数据驱动脚本执行,维护焦点从脚本转向测试数据的一种自动化测试设计模式。
如何实现数据驱动:
代码实现:
6.2、针对KDTX项目登录接口实现数据驱动 (JSON)
需求:
针对登录接口,将请求数据和断言数据组织成JSON文件,完成自动化测试
1、创建测试用例的json文件
2、对JSON文件进行读取
总结:
七、课程添加接口实现自动化测试
测试用例:
代码实现:
八、查询课程列表接口实现自动化测试
测试用例:
封装接口
前置登录的判断同七一致
业务测试
九、课程修改接口实现自动化测试
测试用例
封装接口api:
登陆判断同前面一致
测试代码
十、 课程删除接口实现自动化测试
测试用例
封装api接口
十一、项目配置文件
域名统一放在config中
根路径为
用到路径的代码可以修改为
十二、Allure报告
allure,帮助文档: https://docs.qameta.io/allure
介绍
能生成美观易读的报告
支持多种开发语言,如java、python等
能快速上手
操作步骤:
生成测试结果文件 (json文件)
使用allure命令生成在线报告
创建pytest.ini
在终端窗口中,执行如下命令,会运行满足条件的类,方法
生成在线报告执行如下命令:
在线报告如图所示:
总结: