下面介绍一下在postman中,一些脚本的常见用法:
responseBody
等价于response.text,表示接口请求的响应体,类型为string,如果返回的字符串是json格式的,可以使用JSON.parse()进行解析。
-
curl --location --request POST
'http://8.129.162.225:8082/account/login?username=demo&password=demo'
-
var
type =
typeof responseBody
// 得到的值是string类型
-
var res =
JSON.parse(responseBody)
-
console.log(
type,res.msg,res.data.token)
pm.response
等价于response对象,包含Body、Code、Status、Cookies、Headers等内容。
响应结果断言
-
// 检查接口请求的状态是否为200
-
pm.test(
"请求状态码验证",
function () {
-
pm.response.to.have.status(
200);
-
});
-
// 检查接口响应结果中的内容是否正确(返回json时)
-
pm.test(
"返回结果内容断言",
function () {
-
var jsonData = pm.response.json();
-
pm.expect(jsonData.msg).to.eql(
'成功');
-
pm.expect(jsonData.code).to.eql(
20000 );
-
});
-
// 其他方法:
-
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()
-
pm.response.to.have.jsonBody(optionalExpectEqual:
Object)
-
pm.response.to.have.jsonBody(optionalExpectPath:
String)
-
pm.response.to.have.jsonBody(optionalExpectPath:
String,
optionalValue:*)
在pm.test()中写入的名称,在测试报告中和输出的时候会体现是哪个环节的校验结果,添加类似jenkins中pipeline的这种step的描述的话,有助于在报告中体现的会更加详细,知道具体是哪一种断言不通过,Test Results中的显示如下:
pm对象
pm对象在浏览器中使用网页版以及桌面版都可以使用。(书上说浏览器插件无法使用,应该是以前低版本不支持,现在浏览器搜不到那个插件了,可以直接打开网页使用:https://web.postman.co/home)
pm.info.eventName:用来获取当前是在Pre-request Script还是Tests中执行的脚本,返回的是字符串“prerequest” 或 “test”。
pm.info.iteration:它用来显示当前运行迭代的次数(从0开始)
pm.info.iterationCount:返回迭代运行的总次数
pm.info.requestName:用于返回请求名,对应postman上请求的名称
pm.info.requestId:用于返回请求ID
pm.sendRequest对象
允许异步发送HTTP/HTTPS请求。
① 该方法接受一个兼容SDK的请求和一个回调。回调接收两个参数,其中一个错误(如果有的话),另一个是SDK兼容的响应。
② 该方法可以在预请求或测试脚本中使用。
-
// 以普通字符串URL为例
-
pm.sendRequest(
'https://postman-echo.com/get',
function (err, res) {
-
if (err) {
-
console.log(err);
-
}
else {
-
pm.environment.set(
"variable_key",
"new_value");
-
}
-
});
-
-
-
// 使用完整的SDK请求为例
-
const echoPostRequest = {
-
url:
'https://postman-echo.com/post',
-
method:
'POST',
-
header:
'headername1:value1',
-
body: {
-
mode:
'raw',
-
raw:
JSON.stringify({
key:
'this is json' })
-
}
-
};
-
pm.sendRequest(echoPostRequest,
function (err, res) {
-
console.log(err ? err : res.json());
-
});
-
// pm.test只能在Tests选项卡下使用
-
pm.sendRequest(
'https://postman-echo.com/get',
function (err, res) {
-
if (err) {
console.log(err); }
-
pm.test(
'response should be okay to process',
function () {
-
pm.expect(err).to.equal(
null);
-
pm.expect(res).to.have.property(
'code',
200);
-
pm.expect(res).to.have.property(
'status',
'OK');
-
});
-
});
环境变量、变量相关的操作
-
pm
.globals对象包含以下方法可供调用:
-
pm
.globals
.has(
variableName
:String) →
boolean
-
pm
.globals
.get(
variableName
:String)
-
pm
.globals
.set(
variableName
:String,
variableValue
:String)
-
pm
.globals
.unset(
variableName
:String)
-
pm
.globals
.clear()
-
pm
.globals
.toObject()
-
-
-
pm
.environment对象包含以下方法可供调用:
-
pm
.environment
.has(
variableName
:String) →
boolean
-
pm
.environment
.get(
variableName
:String)
-
pm
.environment
.set(
variableName
:String,
variableValue
:String)
-
pm
.environment
.unset(
variableName
:String)
-
pm
.environment
.clear()
-
pm
.environment
.toObject()
-
-
-
pm
.variables对象:
-
pm
.variables
.get(
variableName
:String)
-
在使用的时候,要注意变量的优先级,尽量不要在全局变量、环境变量、
-
集合脚本中出现命名相同的变量。
其他脚本介绍
pm.request与pm.response :请求与响应信息,打印这两个对象可以看到请求和响应的具体参数之类的。
pm.iterationData对象:包含数据集运行期间提供的数据文件
pm.cookies对象:cookies的相关信息
pm.response.to.be.* 可以通过预定义的规则直接断言
-
pm
.response
.to
.be
.info,检查响应码是否为1××,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.success,检查响应码是否为2××,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.redirection,检查响应码是否为3××,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.clientError,检查响应码是否为4××,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.serverError,检查响应码是否为5××,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.error,检查响应码是否为4××或者5××,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.ok,检查响应码是否为200,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.accepted,检查响应码是否为202,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.badRequest,检查响应码是否为400,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.unauthorized,检查响应码是否为401,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.forbidden,检查响应码是否为403,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.notFound,检查响应码是否为404,如果是则断言为真,否则为假。
-
pm
.response
.to
.be
.rateLimited,检查响应码是否为429,如果是则断言为真,否则为假。
以上脚本可以直接单独使用某一行就行,运行后直接具备断言的效果,会直接在报告中体现是成功还是断言失败:
END
往期推荐
Jmeter使用技巧分享--fiddler导出jmeter脚本
转载:https://blog.csdn.net/liboshi123/article/details/116214321