pm对象
pm对象包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接受到的响应,它还允许获取和设置环境变量和全局变量
pm.info对象
pm.info对象包含与正在执行的脚本有关的信息,如请求名称、请求ID和迭计数等有用信息储存在该对象中
方法 | 描述 |
---|---|
pm.info.eventName | 输出脚本是在哪个脚本栏中执行的 |
pm.info.iteration | 输出当前运行迭代的次数(从0开始) |
pm.info.iterationCount | 输出计划运行的迭代总数 |
pm.info.requestName | 返回请求名 |
pm.info.requestId | 返回请求ID |
pm.sendRequest对象
pm.sendRequest对象允许异步发送HTTP/HTTPS请求。pm.sendRequest()方法接收两个参数,一个URL(请求信息)和一个函数;函数又接收两个参数:第一个URL参数的响应(错误和正确响应),Postman内部将第一个URL参数的响应赋值给两个变量err,res(即err,res就是脚本请求的错误响应或正确响应,如果要对脚本请求的响应进行处理的话,就可以使用err,res来处理)
发送请求并进行断言
pm.sendRequest("url",function(err,res){
if(err){
console.log(err);
}else{
pm.test("断言描述",function(){
pm.expect(err).to.equal(null);
pm.expect(res).to.have.property("code",200);
})
}
})
pm.globals对象
方法 | 描述 |
---|---|
pm.globals.has(“variableName”) | 验证是否存在该全局变量 |
pm.globals.get(“variableName”) | 获取执行全局变量的值 |
pm.globals.set(“variableName”,“variableValue”) | 设置全局变量 |
pm.globals.unset(“variableName”) | 清除指定的全局变量 |
pm.globals.clear() | 清除全部全局变量 |
pm.globals.toObject() | 将全局变量以一个对象的方式全部输出 |
pm.environment对象
方法 | 描述 |
---|---|
pm.environment.has(“variableName”) | 检测环境变量是否包含某个变量 |
pm.environment.get(“variableName”) | 获取环境变量中的某个值 |
pm.environment.set(“variableName”,“variableValue”) | 为某个环境变量设置值 |
pm.environment.unset(“variableName”) | 清除某个环境变量 |
pm.environment.clear() | 清除全部环境变量 |
pm.environment.toObject() | 将环境变量以一个对象的方式全部输出 |
pm.request对象
方法 | 描述 |
---|---|
pm.request | 获取当前发起请求的全部headers |
pm.request.url | 获取当前发起请求的url |
pm.request.headers | 以数组的方式返回当前请求中的header信息 |
pm.response对象
方法 | 描述 |
---|---|
pm.response.code | 获取当前请求返回的状态码如200,404,500等 |
pm.response.reason() | 当前请求成功返回OK |
pm.response.headers | 以数组的形式返回当前请求成功后的response的headers |
pm.response.responseTime | 获取执行此次请求的时间单位为ms |
pm.response.text() | 以文本的方式获取响应里面的body的内容 |
pm.response.json() | 将body里面的内容解析为一个json对象 |
pm.cookies对象
pm.cookies对象包含一个与请求所创建的域相关联的Cookies列表
方法 | 描述 |
---|---|
pm.cookies.has(“cookieName”) | 检查请求的url站点是否存在cookie,返回值Boolean |
pm.cookies.get(“cookieName”) | 获取存在的cookie的值 |
pm.cookies.toObject() | 将请求的url站点中获取到的所有存在的cookie输出到一个对象中去 |
Postman中的Test
在Postman中用于测试、断言的函数主要有如下
方法 | 描述 |
---|---|
pm.test(“testName”,specFunction) | 测试方法,第二个方法中填写测试内容 |
pm.expect(assertion:*) | 断言 |
pm.test()方法用于创建一个测试。接受两个参数,一个是测试的相关描述,另外一个是一个回调函数,用来执行断言相关的语句
pm.expect是一个通用的断言函数。用来处理响应或变量的数据断言。
e.g
pm.test("status code is 200",function(){
pm.response.to.have.statue(200);
})
pm.response.to.be 对象
Postman提供的测试脚本响应断言包含以下API:pm.response.to
方法 | 描述 |
---|---|
pm.response.to.have.status(code:Number) | 判断响应结果是否包含指定的状态码 |
pm.response.to.have.status(reason:String) | 判断响应结果是否包含指定的状态描述 |
pm.response.to.have.header(key:String) | 判断响应结果是否包含指定的头部字段 |
pm.response.to.have.header(key:String,optionalValue:String) | 判断响应结果是否包含指定的头部字段和值 |
pm.response.to.have.body() | 判断响应结果是否包含消息体 |
pm.response.to.have.body(optionalValue:String) | 判断响应结果是否包含指定的字符串 |
pm.response.to.have.body(optionalValue:RegExp) | 判断响应结果是否包含指定的符合正则表达式规则的字符串 |
pm.response.to.have.jsonBody() | 判断响应结果是否包含 json 格式的消息体 |
pm.response.to.have.jsonBody(optionalExpectEqual:Object) | 判断响应结果是否包含指定对象的 json 格式消息体 |
pm.response.to.have.jsonBody(optionalExpectPath:String) | 判断响应结果是否包含指定层级的 json 格式消息体 |
pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*) | 判断响应结果是否包含指定路径并且值也匹配的 json 格式消息体 |
pm.response.to.have.jsonSchema(schema:Object) | 判断响应结果是否符合指定的 json 结构;schema 参数是以对象形式描述的 json 结构 |
pm.response.to.have.jsonSchema(schema:Object, ajvOptions:Object) | 判断响应结果是否符合指定的 json 结构;schema 参数是以对象形式描述的 json 结构并且附加 ajv 库的操作 |
e.g
var json = {
"access_token" : String,
"expires_in":String
}
pm.test("响应体的结构符合", function(){
pm.response.to.have.jsonSchema(json)
})
测试脚本中的响应断言API
Postman常用的八种断言写法
pm.test("检查返回状态码为200",function(){
pm.response.to.have.status(200);
})
pm.test("检查返回的结果中包含指令字符串",function(){
//响应体body是否包含access_token
pm.expect(pm.response.test()).to.include("access_token");
})
pm.test("检查json中其中一个字段的值",function(){
var jsonData = pm.response.json();
pm.expect(jsonData.字段名).to.eql(7200);
})
pm.test("检查返回的值等于一个指定的字符串",function(){
pm.response.to.have.body('{"errcode":0,"errmsg":"ok"}');
})
pm.test("检查是否包含响应头Content-Type",function(){
pm.response.to.have.header("Content-Type")
})
pm.test("检查请求耗时小于300ms",function(){
pm.expect(pm.response.responseTime).to.be.below(300);
})
pm.test("检查返回的状态码是否在数组中",function(){
pm.expect(pm.response.code).to.be.oneOf([200, 202]);
})
pm.test("检查状态信息是指定的字符串",function(){
pm.response.to.have.status("OK")
})
附录
// console.log(responseBody);
// var jsobj = JSON.parse(responseBody)
// // console.log(jsobj.access_token)
// pm.globals.set("token", jsobj.access_token);
// pm.test("检查返回的结果中包含token字符串", function () {
// pm.expect(pm.response.text()).to.include("access_token");
// });
// console.log("response:",pm.response)
// console.log("request:",pm.request);
// pm.test("Response time is less than 200ms", function () {
// pm.expect(pm.response.responseTime).to.be.below(200);
// });
// 输出脚本是在哪个脚本栏中执行的
// console.log(pm.info.eventName);
// 输出当前运行迭代的次数(从0开始)
// console.log(pm.info.iteration)
// 输出计划运行的迭代总数
// console.log(pm.info.iterationCount)
// 返回请求名
// console.log(pm.info.requestName)
// 返回请求ID
// console.log(pm.info.requestId)
// 验证是否存在此全局变量
// console.log(pm.globals.has("token"))
// 获取该全局变量的值
// console.log(pm.globals.get('token'))
// 设置全局变量
// pm.globals.set("token","value")
// 清除指定的全局变量
// pm.globals.unset("token");
// 清除全部的全局变量
// pm.globals.clear();
// 将全局变量以一个对象的方式全部输出
// console.log(pm.globals.toObject());
// 检测环境变量是否包含某个变量
// console.log(pm.environment.has("test"));
// 获取环境变量中的某个值
// console.log(pm.environment.get("test"))
// 为某个环境变量设置值
// pm.environment.set("test","testValue");
// 清除某个环境变量
// pm.environment.unset("test");
// 清除全部环境变量
// pm.environment.clear();
// 将环境变量以一个对象的方式全部输出
// console.log(pm.environment.toObject());
// pm.request对象
// console.log(pm.request)
// 获取当前发起请求的url
// console.log(pm.request.url)
// 以数组的方式返回当前请求中的header信息
// console.log(pm.request.headers)
// pm.response对象
// console.log(pm.response);
// 获取当前请求返回的状态码
// console.log(pm.response.code)
// 当前请求成功返回OK
// console.log(pm.response.reason())
// 以数组的形式返回当前请求成功后的response的headers
// console.log(pm.response.headers)
// 获取执行此次请求的时间单位为ms
// console.log(pm.response.responseTime)
// 以文本的方式获取响应里面的body的内容
// console.log(pm.response.text())
// 将body里面的内容解析为一个json对象
// console.log(pm.response.json());
// pm.cookies对象
// console.log(pm.cookies)
// 检查请求的url站点是否存在cookie,返回值Boolean
// console.log(pm.cookies.has("cookieName"))
// 获取存在的cookie的值
// console.log(pm.cookies.get("cookieName"));
// 将请求的url站点中获取到的所有存在的cookie输出到一个对象中去
// console.log(pm.cookies.toObject("cookieName"))
// 检测响应体的结构是否正常
/*
var json = {
"access_token" : String,
"expires_in":String
}
pm.test("响应体的结构符合", function(){
pm.response.to.have.jsonSchema(json)
})
*/