Postman 常用测试结果验证及使用技巧

xiaoxiao2021-02-28  64

转自:http://blog.csdn.net/willcaty/article/details/65631811 本文为光荣之路所有,转发请注明出处 Postman的test本质上是JavaScript代码,通过我们编写测试代码,每一个tests返回True,或是False。 每一个tests实际上就是一个测试用例 官方文档给出了很多验证方式,我们通过实例来进行学习 接口返回结果为json [html]  view plain  copy {     "status": 301,     "message": "购买商品库存不足",     "lists": [11]   }   1.检查response的body中是否包含字符串 tests["测试点"] = responseBody.has("需要查找的字符串"); 例: tests["status code"] = responseBody.has("301"); tests["status是否存在"] = responseBody.has("status"); tests["lists是否存在"] = responseBody.has("lists"); tests["lists值为11"] = responseBody.has("11"); 注:当json中value为integer时,需要查找的值可以不带双引号, tests["xxx"]xxx代表的是你测试点的名字,可以是中文 tests["xxx"]xxx在一个脚本中如果出现多次,那么只执行第一个,所以尽量不要重复 当value等于中文字符串时,这个方法貌似就不怎么好用了,但是我们有别的方法去验证,往下看,如果有读者知道怎么解决这个问题,也可以联系我,教教我 2.检查Response Body是否等于字符串 tests["测试点"] = responseBody === "Response Body返回的内容"; 这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性, 例子: 接口返回:哈哈 tests["返回为哈哈"] = responseBody === "哈哈"; tests["返回为哈哈"] = responseBody === "哈"; 第二个会返回False,必须完全匹配 3.检查相应时间 tests["Response time 小于200毫秒"] = responseTime > 200; tests["Response time 大于200毫秒"] = responseTime < 200; 4.检查状态码 这个也好理解,就是http请求状态码 tests["Status code is 200"] = responseCode.code === 200; 注: 这里的状态码,跟上面我们用的json里边的"status"不是一回事 5.Code name contains a string tests["Status code name has string"] = responseCode.name.has("Created"); tests["502"] = responseCode.name.has("Server"); tests["502"] = responseCode.name.has("Unreachable Server"); 这个我的理解是,检查HTTP code 对应的string,如下面给出的list 如下对应表,如果使用fiddler模拟相应的返回,注意fiddler返回的大小写有问题,用下表的string 1 消息(1字头) ▪ 100 Continue 2 成功(2字头) ▪ 200 OK 3 重定向(3字头) ▪ 300 Multiple Choices ▪ 301 Moved Permanently ▪ 302 Move temporarily 。。。。。 ▪ 500 Internal Server Error ▪ 501 Not Implemented ▪ 502 Bad Gateway ▪ 503 Service Unavailable ▪ 600 Unparseable Response Headers(省略了一些) 6.设置环境变量/全局变量 postman.setEnvironmentVariable("key", "value"); postman.setGlobalVariable("key", "value"); 7.把XML的body转换成JSON对象: var jsonObject = xml2Json(responseBody); 8.检查json的值 var jsonData = JSON.parse(responseBody);tests["Your test name"] = jsonData.value === 100; 还拿上面的json数据做测试 tests["状态码为301"] = jsonData["status"] == "301"; tests["message"] = jsonData["message"] == "购买商品库存不足"; tests["list"] = jsonData["lists"][0] == "11"; 9.检查有信息 tests["Content-Type is present"] = postman.getResponseHeader("content-Type");//不区分大小写 tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");//区分大小写 10.POST request状态码 tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202; 201 - Created 服务器已经创建了文档,Location头给出了它的URL。 202 - Accepted 已经接受请求,但处理尚未完成。 官方文档中还给出了对于json的验证例子 这种基于JSON格式定义JSON数据结构的规范,我们叫他 JSON Schema 官方例子 var schema = { "items": { "type": "boolean" }};var data1 = [true, false];var data2 = [true, 123];console.log(tv4.error);tests["Valid Data1"] = tv4.validate(data1, schema);tests["Valid Data2"] = tv4.validate(data2, schema); data1和data2是测试数据,schema相当于验证json的规范 示例中验证data1和data2中的value是否都是boolean类型 先了解下书写json规范文档常用的关键字 关键字 描述$schema$schema 关键字状态,表示这个模式与 v4 规范草案书写一致。title用它给我们的模式提供了标题。description关于模式的描述。typetype 关键字在我们的 JSON 数据上定义了第一个约束:必须是一个 JSON 对象。properties定义各种键和他们的值类型,以及用于 JSON 文件中的最小值和最大值。required存放必要属性列表。minimum给值设置的约束条件,表示可以接受的最小值。exclusiveMinimum如果存在 "exclusiveMinimum" 并且具有布尔值 true,如果它严格意义上大于 "minimum" 的值则实例有效。maximum给值设置的约束条件,表示可以接受的最大值。exclusiveMaximum如果存在 "exclusiveMinimum" 并且具有布尔值 true,如果它严格意义上小于 "maximum" 的值则实例有效。multipleOf如果通过这个关键字的值分割实例的结果是一个数字则表示紧靠 "multipleOf" 的数字实例是有效的。maxLength字符串实例字符的最大长度数值。minLength字符串实例字符的最小长度数值。pattern如果正则表达式匹配实例成功则字符串实例被认为是有效的。 还拿第一个json做例子 [html]  view plain  copy {       "$schema": "http://json-schema.org/draft-04/schema#",       "id": "",       "properties": {           "lists": {               "id": "",               "items": {                   "default": 11,                   "description": "检查list值",                   "id": "",                   "title": "",                   "type": "integer"               },               "type": "array"           },           "message": {               "default": "购买商品库存不足",               "description": "message信息",               "id": "",               "title": "",               "type": "string"           },           "status": {               "default": 301,               "description": "返回状态值",               "id": "",               "title": "",               "type": "integer"           }       },       "type": "object"   }   一个完整的JSON Schema验证规范 可以根据实际情况删除一些key,但是红色标记的要保留 default默认值,根据实际情况书写,上面例子“商品库存不足时”的状态码为301,如果要对status和message的值进行验证,那么default就可以加上,如果只是验证返回的value是integer或是string类型,可以忽略 还可以加入最大值最小值等限制 下面是测试代码 [javascript]  view plain  copy var jsonData = JSON.parse(responseBody);      var schema = {     "properties": {       "lists": {         "items": {           "default": 11,           "description""库存不足的商品id",           "type""integer"         },         "type""array"       },       "message": {         "default""购买商品库存不足",         "description""id为11的商品库存不足",         "type""string"       },       "status": {         "description""status",         "type""integer"       }     },     "type""object"   };   tests["json格式验证"] = tv4.validate(jsonData, schema); //验证json格式 tests["返回状态码是200"] = responseCode.code === 200; tests["状态码为301"] = jsonData["status"] == "301"; tests["message"] = jsonData["message"] == "购买商品库存不足"; tests["list"] = jsonData["lists"][0] == "11"; 这样接口返回的json结构和数据我们就可以验证了。 tv4为Postman引入的外部库,想了解的可以去看官方文档 另外Postman还提供了一些方法如: responseCookies request.data["key"]=="value" request.headers["key"]=="value" request.method request.url request responseHeaders responseBody  responseTime  responseCode 包含code,name,detail iteration  这些方法可以帮助我们做更多的事情,比如通过一个接口拿到cookie值,然后把cookie设置成全局变量,提供给其他接口使用 当我们写测试脚本时,可能会遇到脚本书写错误或是需要一些log来辅助我们完善脚本, 我们可以打开 View->Show Postman Console,打开后我们可以通过console.log(xxx)来输出日志和查看错误信息 通过上面这些知识,我们可以解决大多数的问题,如果想更进一步,需一定的js基础
转载请注明原文地址: https://www.6miu.com/read-79377.html

最新回复(0)