1、全局变量
- 概念:在postman全局生效的变量,全局唯一。
- 设置:
- 代码设置:pm.globals.set("glb_age",100)
//示例:
pm.globals.set("glb_age",100)
- 获取:
- 代码获取:var 接收值的变量 = pm.globals.get("全局变量名")
//示例:
var ret = pm.globals.get("glb_age")
- 请求参数获取(postman界面获取):{{全局变量名}}
//示例:
{{glb_age}}
为什么要写接口测试用例?
- 防止测试点漏测,条例清晰;
- 方便分配工具,评估工作量和时间;
- 面试时使用;
2、接口测试的测试点
2.1功能测试
- 单接口功能:
- 手工测试中的单个业务模块,一般对应一个接口。
- 登录业务----》登录接口
- 加入购物车业务---》加入购物车接口
- ......
- 借助工具、代码绕开前端界面,组织接口所需要的的数据,展开接口测试。
- 手工测试中的单个业务模块,一般对应一个接口。
- 业务场景功能:
- 按照用户实际使用场景,梳理接口业务场景。
- 组织业务场景时,一般只需做正向测试即可(与手工一致)
- 一般建议用最少的用例覆盖最多的业务场景
- 登录----搜索商品---加入购物车----下单----支付----评价
3、接口测试与手工测试不同点
1、手工测试,测写入到输入框中的数据是否正确。接口测试测参数 对应的参数值是否正确;
2、接口测试,不单单针对参数值进行,还可以针对参数本身进行测试;
- 正向参数:
- 必选参数:所有的必选必填都包含;
- 组合参数:所有的必选+任意一个或多个可选参数;
- 全部参数:所有的必选+所有的可选参数
- 反向参数:
- 多参:多出一个或多个必选参数(可以任意指定)
- 少参:缺少一个或多个必选参数;
- 无参:没有必选参数;
- 错误参数:参数名输入错误;
4、单接口测试用例
手工测试用例文档8大要素:
- 编号、用例名称(标题)、模块、优先级、预置条件、测试数据、操作步骤、预期结果
接口测试用例文档要素:
- 编号、用例名称(标题)、模块、优先级、预置条件、请求方法、URL、请求头、请求体(请求数据)、预期结果
分析接口文档以登录接口为例
登录模块的测试点:
- 正向:
- 登录成功
- 反向:
- 用户名为空
- 用户名包含特殊字符、字母
- 用户名超过11位(12位)
- 用户名不足11位(10位)
- 用户名未注册
- 密码为空
- 密码包含特殊字符、字母
- 密码为1位
- 密码为100位
- 密码错误
- 参数(接口测试特有)
- 正向
- 必选参数:正确用户名+正确密码
- 可选参数:忽略
- 全部参数:正确用户名+正确密码
- 反向
- 多参:多abc:“123”
- 少参:没有用户名,正确密码
- 无参:没有任何参数
- 错误参数(手机号参数名错误):abc:13333333333,password:"123456"
- 正向
5、导出和导入测试计划
导出测试计划:选中--》三点选中export;
导入测试计划:选中---》import;
6、postman断言
postman断言简介
- postman断言借助javaScript - js语言编写代码,自动判断预期结果与实际结果是否一致。
- 断言代码写在Tests的标签中。
常用断言
(1)、断言响应状态码
//断言响应状态码
pm.test("Status code is 200", function () {
//postman的响应结果中应该包含状态码200,200是预期结果
pm.response.to.have.status(200);
});
- pm是postman下的一个实例;
- test()是Pm实例中一个方法,有两个参数;
- 参数1:在断言成功后,给出的文字提示。可以修改。"Status code is 200";
- 参数2:匿名函数;
(2)、断言响应体是否包含某个字符串
//断言响应体是否包含某个字符串
pm.test("Body matches string", function () {
//pm期望响应文本中包含xxx字符串
pm.expect(pm.response.text()).to.include('"success":true');
});
- pm:postman的一个实例
- test():postman实例的方法,有两个参数
- 参数1:断言后显示的文字提示信息,可改;
- 参数2:匿名函数;
案例:
//断言响应体是否包含某个字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include('"success":true');
});
(3)、断言响应体是否等于某个字符串(对象)
pm.test("Body is correct", function () {
//意思是,pm的响应中应该有响应体xxx
pm.response.to.have.body("response_body_string");
});
(4)、断言json数据
pm.test("Your test name", function () {
//var jsonData 用js语法定义一个变量,jsonData就是变量名
//pm.response.json():代表响应的json结果
//举例:response.json()
/*
{
"code": 200,
...
"success": true,
"traceId": "598a67c79346b0617b6d77f1efb46fe0"
}
*/
var jsonData = pm.response.json();
//pm预期json结果key对应的值等于xxx
pm.expect(jsonData.value).to.eql(100);
});
举例:
//断言json数据
pm.globals.unset("variable_key");
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.success).to.eql(true);
});
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data.userBizInfoEntity.baseUserId).to.eql(310000001746);
});
(5)、断言响应头
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type","application/json");
});
7、全局变量与环境变量
7.1 概念
- 全局变量:全局变量是全局唯一的,不可重复定义的变量;
- 环境变量:
- 一个变量只能属于某个环境,在某一个环境中变量不可重复定义
- 在环境与环境之间可以定义重复的变量
- 一个环境可以包含多个环境变量
- 常见环境分类:开发环境,测试环境,生产环境;
7.2 设置变量
- 全局变量
- 手动设置
- 代码设置:pm.globals.set("var_name",value)
- 环境变量
- 手动设置
- 代码设置:pm.environment.set(:var_name",value)
7.3 获取变量值
- 全局变量
- 请求参数中获取:{{var_name}}
- 代码中获取:var value = pm.globals.get("var_name")
案例
调用百度首页接口,传时间戳给服务器
实现步骤:
1.在Pre-request Script 标签页中,添加代码,拿到时间戳,写入全局变量
//拿到时间戳
var time = new Date().getTime()
//将时间戳设置到全局变量
pm.globals.set("glb_time",time)
2. 保存,点击send按钮,发送请求。请求发送前执行上述代码。写入全局变量
3. 查看写入的变量
4. 书写URL地址,在请求参数界面中,使用全局变量。{{全局变量名}}
5. 在postman的控制台,查看发送的http请求;
8、postman的关联
介绍:应用于多个http请求之间,有数据关联,或依赖关系时。
实现步骤
A接口依赖B接口的数据
1、向B接口发送http请求,获取数据。
2、将数据设置至全局变量(环境变量)中。
3、A接口获取全局变量(环境变量)中数据值,进行使用。
案例
请求 获取天气接口,提取响应结果中的城市,将城市名,给百度搜索接口使用。
9、批量执行测试用例
9.1 postman 测试报告
- 安装newman
- 使用newman生成测试报告
9.2 批量执行测试用例
选中模块点击run,批量执行
9.3 newman 生成测试报告
- 批量执行测试用例集;
- 导出测试用例集(得到xxx.json的文件);
- 使用导出的用例集生成测试报告,在终端执行;
9.4 执行测试
使用newman命令,运行导出的测试集脚本,打开cmd输入;
newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export 测试报告名.html
eg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html
命令说明
- run xxx.json: 表示要执行的postman脚本,即导出的测试集数据
- -e source: 用来指定环境变量文件的路径
- -d source: 用来指定测试数据文件的路径
注意:
1、如果添加 -r html就报错! 说明 newman -reporter-html 安装失败!
2、批量导出的测试用例放在一个文件夹里,然后在该文件夹内输入cmd,执行生成测试报告的命令;