一、断言 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);
|