小言_互联网的博客

Postman教程-Pre-request Script和Tests脚本进阶

376人阅读  评论(0)

下面介绍一下在postman中,一些脚本的常见用法:

  • responseBody

等价于response.text,表示接口请求的响应体,类型为string,如果返回的字符串是json格式的,可以使用JSON.parse()进行解析。


   
  1. curl --location --request POST 'http://8.129.162.225:8082/account/login?username=demo&password=demo'
  2. var  type =  typeof responseBody   // 得到的值是string类型
  3. var res = JSON.parse(responseBody)
  4. console.log( type,res.msg,res.data.token)

  • pm.response

等价于response对象,包含Body、Code、Status、Cookies、Headers等内容。

  • 响应结果断言


   
  1. // 检查接口请求的状态是否为200
  2. pm.test( "请求状态码验证", function () {
  3. pm.response.to.have.status( 200);
  4. });

   
  1. // 检查接口响应结果中的内容是否正确(返回json时)
  2. pm.test( "返回结果内容断言", function () {
  3. var jsonData = pm.response.json();
  4. pm.expect(jsonData.msg).to.eql( '成功');
  5. pm.expect(jsonData.code).to.eql( 20000 );
  6. });

   
  1. // 其他方法:
  2.  pm.response.to.have.status(code: Number)
  3.  pm.response.to.have.status(reason: String)
  4.  pm.response.to.have.header(key: String)
  5.  pm.response.to.have.header(key: StringoptionalValue: String)
  6.  pm.response.to.have.body()
  7.  pm.response.to.have.body(optionalValue: String)
  8.  pm.response.to.have.body(optionalValue: RegExp)
  9.  pm.response.to.have.jsonBody()
  10.  pm.response.to.have.jsonBody(optionalExpectEqual: Object)
  11.  pm.response.to.have.jsonBody(optionalExpectPath: String)
  12.  pm.response.to.have.jsonBody(optionalExpectPath: StringoptionalValue:*)

在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兼容的响应。

② 该方法可以在预请求或测试脚本中使用。


   
  1. // 以普通字符串URL为例
  2.   pm.sendRequest( 'https://postman-echo.com/get', function (err, res) {
  3.    if (err) {
  4.    console.log(err);
  5.    } else {
  6.    pm.environment.set( "variable_key", "new_value");
  7.    }
  8.   });
  9. // 使用完整的SDK请求为例
  10.    const echoPostRequest = {
  11.    url: 'https://postman-echo.com/post',
  12.    method: 'POST',
  13.    header: 'headername1:value1',
  14.    body: {
  15.    mode: 'raw',
  16.    raw: JSON.stringify({ key: 'this is json' })
  17.    }
  18.   };
  19.   pm.sendRequest(echoPostRequest, function (err, res) {
  20.    console.log(err ? err : res.json());
  21.   });
  22.    // pm.test只能在Tests选项卡下使用
  23.   pm.sendRequest( 'https://postman-echo.com/get', function (err, res) {
  24.    if (err) { console.log(err); }
  25.    pm.test( 'response should be okay to process', function () {
  26.    pm.expect(err).to.equal( null);
  27.    pm.expect(res).to.have.property( 'code', 200);
  28.    pm.expect(res).to.have.property( 'status', 'OK');
  29.    });
  30.   });
  • 环境变量、变量相关的操作


   
  1. pm .globals对象包含以下方法可供调用:
  2.    pm .globals .has( variableName :String) →  boolean
  3.    pm .globals .get( variableName :String) 
  4.    pm .globals .set( variableName :String, variableValue :String)
  5.    pm .globals .unset( variableName :String)
  6.    pm .globals .clear()
  7.    pm .globals .toObject()
  8. pm .environment对象包含以下方法可供调用:
  9.    pm .environment .has( variableName :String)boolean
  10.    pm .environment .get( variableName :String)
  11.    pm .environment .set( variableName :StringvariableValue :String)
  12.    pm .environment .unset( variableName :String)
  13.    pm .environment .clear()
  14.    pm .environment .toObject()
  15. pm .variables对象:
  16.   pm .variables .get( variableName :String)
  17. 在使用的时候,要注意变量的优先级,尽量不要在全局变量、环境变量、
  18. 集合脚本中出现命名相同的变量。
  • 其他脚本介绍

pm.request与pm.response :请求与响应信息,打印这两个对象可以看到请求和响应的具体参数之类的。

pm.iterationData对象:包含数据集运行期间提供的数据文件

pm.cookies对象:cookies的相关信息

  •  pm.response.to.be.*  可以通过预定义的规则直接断言


   
  1. pm .response .to .be .info,检查响应码是否为1××,如果是则断言为真,否则为假。
  2. pm .response .to .be .success,检查响应码是否为2××,如果是则断言为真,否则为假。
  3. pm .response .to .be .redirection,检查响应码是否为3××,如果是则断言为真,否则为假。
  4. pm .response .to .be .clientError,检查响应码是否为4××,如果是则断言为真,否则为假。
  5. pm .response .to .be .serverError,检查响应码是否为5××,如果是则断言为真,否则为假。
  6. pm .response .to .be .error,检查响应码是否为4××或者5××,如果是则断言为真,否则为假。
  7. pm .response .to .be .ok,检查响应码是否为200,如果是则断言为真,否则为假。
  8. pm .response .to .be .accepted,检查响应码是否为202,如果是则断言为真,否则为假。
  9. pm .response .to .be .badRequest,检查响应码是否为400,如果是则断言为真,否则为假。
  10. pm .response .to .be .unauthorized,检查响应码是否为401,如果是则断言为真,否则为假。
  11. pm .response .to .be .forbidden,检查响应码是否为403,如果是则断言为真,否则为假。
  12. pm .response .to .be .notFound,检查响应码是否为404,如果是则断言为真,否则为假。
  13. pm .response .to .be .rateLimited,检查响应码是否为429,如果是则断言为真,否则为假。

以上脚本可以直接单独使用某一行就行,运行后直接具备断言的效果,会直接在报告中体现是成功还是断言失败:

END

往期推荐

Jmeter使用技巧分享--fiddler导出jmeter脚本

Fiddler抓包工具使用小技巧

HTTP协议Header选项解读

HTTP协议请求方法和状态码介绍

HTTPS协议下Fiddler抓包

HTTP协议压缩格式和URL编码介绍

初探HTTP协议和Fiddler抓包原理

Fiddler Everywhere之AutoResponder功能详解

Fiddler Everywhere v1.0.1版本基础功能介绍


转载:https://blog.csdn.net/liboshi123/article/details/116214321
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场