0


API接口测试-postman自动断言及关联用法

在批量执行大量接口请求时,往往需要自动化断言来实现精准的数据请求把控,来监测请求过程中产生的异常,本文将讲述postman在实际使用过程中常用的一些自动化断言方法以及基础关联用法。

自动化断言


断言:获取一个环境变量(Get an environment variable)

  1. pm.environment.get("variable_key");
  2. //返回值用一个变量接收 如var value = pm.environment.get("variable_key");
  3. //环境变量:在特定环境下生效的变量(生产、测试、开发...)

断言:获取一个全局变量(Get a global variable)

  1. pm.globals.get("variable_key");
  2. //返回值用一个变量接收 如var value = pm.globals.get("variable_key");
  3. //全局变量:在postman全局生效的变量,全局唯一。

断言:获取一个变量(Get a variable)

  1. pm.variables.get("variable_key");
  2. //界面获取法:{{变量名}}
  3. //代码获取:需用变量接收

断言:获取一个集合变量(Get a collection variable)

  1. pm.collectionVariables.get("variable_key");

断言:设置一个环境变量(Set an environment variable)

  1. pm.environment.set("variable_key", "variable_value");
  2. //variable_key:设置的环境变量名,必须带双引号
  3. //variable_value:设置的环境变量值,必须带双引号

断言:设置一个全局变量(Set a global variable)

  1. pm.globals.set("variable_key", "variable_value");
  2. //variable_key:设置的全局变量名,必须带双引号
  3. //variable_value:设置的全局变量值,必须带双引号

断言:清除一个环境变量(Clear an environment variable)

  1. pm.environment.unset("variable_key");

断言:清除一个全局变量(Clear a global variable)

  1. pm.globals.unset("variable_key");

断言:清除一个集合变量(Clear a collection variable)

  1. pm.collectionVariables.unset("variable_key");

断言:发送一个请求(Send a request)

  1. pm.sendRequest("https://postman-echo.com/get", function (err, response) {
  2. console.log(response.json());
  3. });

断言:响应状态码是200(Status code:Code is 200)

  1. pm.test("Status code is 200", function () {
  2. pm.response.to.have.status(200);
  3. });
  4. // 常用,Status code is 200是名称,可以自己随便起,status(200)是断言的状态码内容

断言:响应体中是否包含字符串(Response body:Contains string)

  1. pm.test("Body matches string", function () {
  2. pm.expect(pm.response.text()).to.include("string_you_want_to_search");
  3. });
  4. // 常用,Body matches string的位置可以自己定义名称,string_you_want_to_search位置替换成想要判断的字符串

断言:JSON的值检查(Response body:JSON value check)

  1. pm.test("Your test name", function () {
  2. var jsonData = pm.response.json();
  3. pm.expect(jsonData.value).to.eql(100);
  4. });
  5. //最常用
  6. //Var jsonData:使用JavaScript语法定义一个变量,jsonData是变量名
  7. //pm.response.json()是将响应的结果转化为了json格式
  8. //Your test name可以修改成任意名称
  9. //Value替换为json的键 eql后面的100替换为json的值

断言:响应体是否等于一个字符串(Response body:Is equal to a string)

  1. pm.test("Body is correct", function () {
  2. pm.response.to.have.body("response_body_string");
  3. });
  4. // 比较实用,应用场景不是很广泛,因为判断是完全相等才可以,Body is correct可以替换成任意名称,response_body_string替换为想要判断的文本内容
  5. //替换成JSON时不需要加双引号

断言:校验响应头(Response headers:Content-Type header check)

  1. pm.test("Content-Type is present", function () {
  2. pm.response.to.have.header("Content-Type");
  3. });
  4. //使用频率不高
  5. //Content-Type is present为提示信息可以改成任意名称
  6. //主要用于断言响应头中是否包含某个值,Content-Type可替换为想断言的响应头
  7. //可以同时断言key和value如:
  8. pm.test("Content-Type is present", function () {
  9. pm.response.to.have.header("Content-Type","application/json");
  10. });

断言:响应时间小于200ms(Response time is less than 200ms)

  1. pm.test("Response time is less than 200ms", function () {
  2. pm.expect(pm.response.responseTime).to.be.below(200);
  3. });

断言:状态码post请求成功(Status code:Successful POST request)

  1. pm.test("Successful POST request", function () {
  2. pm.expect(pm.response.code).to.be.oneOf([201, 202]);
  3. });

断言:状态码中是否包含字符串(Code name has string)

  1. pm.test("Status code name has string", function () {
  2. pm.response.to.have.status("Created");
  3. });

断言:将XML转换为JSON对象(Response body:Convert XML body to a JSON Object)

  1. var jsonObject = xml2Json(responseBody);

断言:判断响应状态码在不在其中(Status code:Successful POST request)

  1. pm.test("Successful POST request", function () {
  2. pm.expect(pm.response.code).to.be.oneOf([201, 202,200]);
  3. });
  4. //oneOf后的括号中可书写多种情况

**预请求脚本参数携带传递案例 **


案例:将前置脚本获取的时间戳传递给HTTP/HTTPS请求

  1. Pre-request Script:
  2. // 获取时间戳
  3. var timestamp = new Date().getTime()
  4. //将时间戳设置到全局变量
  5. pm.globals.set("glb_timestamp",timestamp)
  6. Params:
  7. 设置KEYt
  8. 设置VALUE:{{glb_timestamp}}
  9. Request
  10. "http://域名?t={{glb_timestamp}}"
  11. //完成传递,校验方法:View-Show Postman Console(控制台)

**跨请求关联案例 **


案例:通过天气API获取的城市信息作为数据传递给百度搜索API使用

  1. 天气API
  2. //天气接口响应信息:GET请求
  3. "URL:http://www.weather.com.cn/data/sk/101010100.html"
  4. {
  5. "weatherinfo": {
  6. "city": "北京",
  7. "cityid": "101010100",
  8. "temp": "27.9",
  9. "WD": "南风",
  10. "WS": "小于3级",
  11. "SD": "28%",
  12. "AP": "1002hPa",
  13. "njd": "暂无实况",
  14. "WSE": "<3",
  15. "time": "17:55",
  16. "sm": "2.1",
  17. "isRadar": "1",
  18. "Radar": "JC_RADAR_AZ9010_JB"
  19. }
  20. }
  21. Tests:
  22. //从响应结果中获取城市的名字
  23. var jsonData = pm.response.json()
  24. var city = jsonData.weatherinfo.city
  25. //将城市名写入到全局变量
  26. pm.globals.set("glb_city",city)
  27. 百度API
  28. GET请求URL"http://www.baidu.com/s?wd={{glb_city}}"
  29. //通过全局变量完成关联和数据传递

❤关注我,不迷路❤

我的本文相关专栏

软件测试专栏(单击此处进入)


我的其它作品专栏

PC常见故障汇总专栏(点击进入)

EXCEL综合场景应用详解(点击此处进入)

全国计算机等级考试-二级python基础(点击此处进入)


本文转载自: https://blog.csdn.net/Liu_GuoXing/article/details/127422028
版权归原作者 @Liu_GuoXing 所有, 如有侵权,请联系我们删除。

“API接口测试-postman自动断言及关联用法”的评论:

还没有评论