postman的断言

postman中的精确断言
执行前代码设置了一个可变的参数,请求体中传送的数据为资料库+可变参数形式,想精确断言,为什么失败了。如图所示。

img

img

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7795813
  • 这篇博客也不错, 你可以看下关于Postman获取接口返回值设置为变量,提供给后续接口使用。
  • 除此之外, 这篇博客: postman相关使用:全局变量,动态参数,断言中的 断言 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    //状态断言
    pm.test(“检查返回状态码200”,function(){
    pm.response.to.hava.status(200);
    });
    //业务断言
    pm.test(“Body matches string”, function () {
    pm.expect(pm.response.text()).to.include(“string_you_want_to_search”);
    });
    注意:include 内不可以直接引用postman自带的动态参数,可使用自定义动态参数,

    1.如:include("string{{$times}}") //非正确方法不能使用,报错
      如:include("string{{$timestamp}} ")//内置动态参数不能使用,报错
    
    自定义动态参数可使用以下方法引用:
    1、include("string"+pm.globals.get("times"))
    2、include("string"+globals["times"])
    3、include("string"+globals.times)
    
    • 单个接口断言:接口 —Tests 下编写脚本即可

    • 全局断言: collections----Tests 下编写脚本即可

    • 断言内如何取文件的数据?

      如:csv内容 :
      name ,sexy, age
      lili,1,23

      data.name ,即可获取csv的name属性
      如:console.log(data.name); //打印csv 的name属性

  • 以下回答来自chatgpt:

    问题描述中提到在使用Postman进行API测试时遇到了断言失败的问题。断言是用来判断接口是否成功的一种方式,常见的断言方式包括判断返回码、判断返回结果中是否包含特定的字符串、判断返回的json数据中的某个字段的值等。根据问题描述,可能的解决方案如下:

    1. 首先,需要确认断言失败的具体情况以及错误信息。可以通过查看Postman的console输出或者response检查来获取更多的信息。

    2. 确认断言中使用的变量是否正确设置。根据参考资料中的内容,可以使用上一个接口的返回值作为下一个接口的参数。首先在上一个接口的tests中取值,使用JSON.parse将返回的值转化为一个json格式的数据,并保存到一个变量中。然后在下一个接口中使用{{access_token}}来取值,{{access_token}}即为上一个接口中设置的全局变量。确保在断言中使用的变量与实际使用的参数一致。

    3. 如果断言中涉及到返回的json数据的断言,可以在断言前输出一下response的内容,查看是否符合预期。例如,在断言前添加console.log(pm.response.json())来查看返回的json数据是否包含了期望的字段。

    4. 使用Postman的debug功能来查看请求和响应的具体细节,以便更好地分析问题。

    如果以上解决方案都不能解决问题,建议进一步调查问题的具体原因,例如检查接口的实际返回值是否符合预期、调整断言的方式和判断条件等。

    代码示例:

    // 上一个接口的tests中设置全局变量
    var value = JSON.parse(responseBody);
    pm.globals.set("access_token", value.access_token);
    
    // 下一个接口中使用全局变量作为参数进行断言
    pm.test("Body matches string", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.access_token).to.eql(pm.globals.get("access_token"));
    });
    

    此处只是一个示例,请根据实际情况和需要进行具体的调整和修改。如果以上解决方案都不能解决问题,建议进一步调查问题的具体原因,例如检查接口的实际返回值是否符合预期、调整断言的方式和判断条件等。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^