当前位置 博文首页 > 个人微信:xiaobotester,添加进行学习交流请备注。 个人微信公

    个人微信:xiaobotester,添加进行学习交流请备注。 个人微信公

    作者:[db:作者] 时间:2021-07-03 09:28

    下面介绍一下在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脚本

    Fiddler抓包工具使用小技巧

    HTTP协议Header选项解读

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

    HTTPS协议下Fiddler抓包

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

    初探HTTP协议和Fiddler抓包原理

    Fiddler Everywhere之AutoResponder功能详解

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

    cs