文章目录
- 一、接口测试基础
- 二、Postman实现接口测试
一、接口测试基础
1.接口及接口测试概念
接口的类型
#接口
def eat (something):
print(f'小鸟吃{something}')
#使用接口,传递数据
def bird():
eat('1')
bird()
小鸟吃1
接口测试
2.HTTP协议(超文本传输协议)
协议:规则,要求通信双方必须严格遵守
2.1 URL(统一资源定位符)
作用:在网络环境中,唯一的定义一个数据资源
2.2 HTTP请求
整体格式(Content-Type:描述请求体的数据类型)
fiddler抓包验证
请求行
请求头
请求体
2.3HTTP响应
状态行
响应头
响应体
2.4 传统风格接口
List item
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ow2LGo0i-1650257047431)(https://img-blog.c sdnimg.cn/289a0d16ce0a4a8fa7d78f156d8377cd.png)]
2.5 RESTful风格接口
3.接口测试流程
接口文档
结构
接口文档解析
黑马人力资源网页:
http://ihrm-test.itheima.net/#/settings/index
开发者工具
4.接口用例设计
单接口测试用例
业务场景测试用例
二、Postman实现接口测试
1.Postman介绍和安装
安装插件newman
node.js安装成功
newman安装成功
成功!!
黑马官网
http://yun.itheima.com/gongju/c144/p/3.html
2.Postman基本用法
案例:从接口文档,获取登录接口的http请求,使用postman发送
3.Postman高级用法
创建collections
点笔修改名称
ctrl+s 保存
导出用例集
使用默认即可
直接点击import即可导入
断言
1.断言响应状态码
//断言响应状态码是否为200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
成功
2.断言响应体是否包含某个字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
3.断言响应体是否等于某个字符串(对象)
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
4.断言json数据
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
5.断言响应头
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
postman断言工作原理
全局变量和环境变量
请求前置脚本
在send按钮点击后,第一时间被执行,在postman内部实际http请求之前
时间戳工具
案例:
3.查看写入的变量
关联
应用于多个http请求之间,有数据关联,或依赖关系时
实现步骤
案例
实现步骤:
//从响应结果中,获取城市名
var jsonData = pm.response.json()
var city =jsonData.weatherinfo.city
//将城市名写入到全局变量
pm.globals.set("glb_city",city)
4.
批量执行用例集
选中一个集合→run→执行
4.Postman测试报告
#完整的命令
newman run xxxx.json -e 环境变量文件 -d外部数据文件 -r html --reporter-html-report 第一个测试报告.html
#现在 终端 ,测试一下
newman run xxxx.jsom
#运行
newman run 批量执行测试用例.postman_collection.json
#保存
newman run 批量执行测试用例.postman_collection.json -r html --reporter-html-report 第一个测试报告.html
5.postman参数化
数据文件简介
导入外部 数据文件
编写csv文件→点击用例集→run→runner→select file→选中文件→点击预览,进行校验
编写json文件→
读取数据文件数据
案例
生成测试报告
6.项目实战(iHRM)
http://ihrm-test.itheima.net/#/settings/index
初始化项目环境
新建用例集
创建环境变量
添加环境
登录模块
登录成功接口
请求接口
断言
pm.test("断言响应状态码为 200", function () {
pm.response.to.have.status(200);
});
pm.test("断言success的值为true", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.success).to.eql(true);
});
pm.test("断言code的值为10000", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(10000);
});
pm.test("断言message的值为操作成功!", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.message).to.eql("操作成功!");
});
pm.test("断言data的值为9811b176-7013-4d6f-bd3a-d4e8697762ae", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data).to.eql( "21fa8d87-9b52-4367-a968-0b7d8f285385");
});
其他接口共性分析
实现其他接口
员工管理模块
总析
提取令牌
//拼接data的值,添加Bearer和空格。组成合法令牌
//获取响应体
var jsonData =pm.response.json()
//提取data的值,保存在tmp_token中
var tmp_token = jsonData.data
//拼接Bearer和空格到data值的前面 “Bearer”+“ ”+tmp_token
pm.environment.set("env_token","Bearer"+" " + tmp_token)
添加员工
注意保证手机号的唯一性
提取添加员工的id
//获取添加员工的响应体
var jsonData = pm.response.json()
//提取员工id
var tmp_id=jsonData.data.id
// 设置到环境变量
pm.environment.set("env_emp_id",tmp_id)
查询员工
{{base_url}}/api/sys/user/:target
# :target 是路径参数
修改员工
查询员工列表
改url即可