请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1118|回复: 0

接口测试2

[复制链接]

18

主题

18

帖子

113

积分

注册会员

Rank: 2

积分
113
发表于 2022-9-16 22:09:09 | 显示全部楼层 |阅读模式
一、断言
http协议:响应内容响应行(响应状态码,状态信息),响应头,响应正文
断言写在tests 页签里面:tests里面的代码是接口请求完成之后执行
一般断言的方面:1、断言状态码  2、断言响应时间  3、断言响应正文是否正确
// 获取响应状态码和状态信息
var code = responseCode.code;
var msg = responseCode.name;
console.log(code);
console.log(msg);
// 获取响应头
var conn = postman.getResponseHeader('Connection');
console.log(conn);
var date = postman.getResponseHeader('Date');
console.log(date);
// 响应正文
var body= responseBody;
console.log(body);
// 响应时间
var time = responseTime;
console.log(time);
// 获取正文中一部分内容
// 正文内容为json对象 -- 通过jsonpath 获取
// 把响应正文定义成一个json对象
var jsondata = JSON.parse(responseBody);
// 通过json路径来取值
console.log(jsondata.expires_in);
console.log(jsondata.access_token);
// 返回的数据可能不是json数据---正则表达式进行匹配
var a_token = responseBody.match(new RegExp('"access_token":"(.+?)"'))[1]; // match函数返回的是列表,为了只取token 加上下标
console.log(a_token);
断言:
// 断言响应状态码是否为多少
pm.test("断言响应状态码是否为200", function () {
pm.response.to.have.status(200);//状态码可以修改
});
// 断言响应正文包含某个字符串
pm.test("断言响应正文包含7200", function () {
pm.expect(pm.response.text()).to.include("7200");});
//只用于json数据,断言json中的某个值是否为多少
pm.test("断言expires_in的值为7200", function () {
var jsonData = pm.response.json(); // 定义json对象
pm.expect(jsonData.expires_in).to.eql(7200);
});
// 断言响应正文内容等于某个值
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
// 响应头是否包含某个字段
pm.test("响应头是否包含Content-Type", function () {
pm.response.to.have.header("Content-Type");
});
//断言响应时间是否低于某个值
pm.test("断言响应时间是否低于350ms", function () {
pm.expect(pm.response.responseTime).to.be.below(350);
});
// 断言状态码是否为两个中的一个
pm.test("断言状态码是否为两个中的一个", function () {
pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});
// 断言状态信息是否为某个值
pm.test("断言状态信息是否为OK", function () {
pm.response.to.have.status("OK");
});
二、接口关联---全局变量
  比如 所有的微信公众号里面的接口都要使用获取token接口中 access_token
       Tinyshop中 支付的金额/订单号是由前一个接口--提交订单完成后得到的金额和订单号
postman设置接口关联:
        在实际的接口测试中,后一个接口经常需要用到前一个接口返回的结果,从而让后一个接口能正常执行,这个过程的实现称为关联。
        
postman中实现关联操作的步骤如下:
1、利用postman获取上一个接口指定的返回值  --json对象和正则表达式
2、使用postman全局变量保存上一个接口的值  
3、和之前引用全局变量一样,使用{{全局变量名}}即可。
三、环境变量
   3.1、为什么要设置环境变量?
     软件运行环境:服务器程序配置
一般会存在开发环境、测试环境、预发布环境、线上环境(生产环境)
服务器的ip地址肯定是不相同的;
接口测试就有可能要在多个环境下进行,如何快速的切换各种环境---设置环境变量;
   3.2、如何设置环境变量?
       环境快速查看器---添加环境变量
四、参数化
     Pre-request script ---预请求脚本:执行在请求开始之前
     4.1、什么时候需要对数据进行参数化?
         在接口测试的时候,有些数据需要动态变化,可能取值是唯一的;
        比如:微信公众号:用户标签名,手机不能重复注册,时间和日期
     4.2、参数化的方法有哪些?
一、内建变量实现
{{$guid}}//生成GUID----- 全球唯一值
96a4977b-f1ba-4ed4-af23-6a79720ca3d7
{{$timestamp}}//当前时间戳
{{$randomInt}}//0-1000的随机整数
二、Pre-request Script页签中使用代码实现
              // 时间戳
var times = Date.now();
console.log(times);
pm.globals.set("tt", times);
// gui id
const guid = 'xxx-xxx-4xx-yxx-xxx'
.replace(/x/g, () => (Math.floor(Math.random() * 16)).toString(16))
.replace(/y/g, () => (Math.floor(Math.random() * 4 + 8)).toString(16));
console.log(guid)
// 随机整数
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
var r_int = randomInt(1000,2000);
console.log(r_int);

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2023-6-2 14:17 , Processed in 0.040018 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表