Postman 邮递员纽曼处理状态代码

Postman 邮递员纽曼处理状态代码,postman,newman,Postman,Newman,我有一个问题,是否有可能有一个以上的状态代码签入测试。 当我用同一批用户重新运行测试用例时,当创建用户时,用例是201,当用户已经存在时,用例是409。201已处理,但409未处理。a var data = pm.response.json() pm.test("Status test", function () { return pm.response.to.have.status(200) || pm.response.to.have.status(409);

我有一个问题,是否有可能有一个以上的状态代码签入测试。 当我用同一批用户重新运行测试用例时,当创建用户时,用例是201,当用户已经存在时,用例是409。201已处理,但409未处理。a

 var data = pm.response.json()
 pm.test("Status test", function () {
  return  pm.response.to.have.status(200) || pm.response.to.have.status(409);
     
});


There was an error in evaluating the test script:  JSONError: Unexpected token 'U' at 1:1 User already Exists ^
编辑:

对于
200
我正在获取用户对象,我无法在此发布此对象


对于
409
字符串用户已经存在

测试状态200或409的更优雅的方法是:

pm.expect(pm.response.code).to.be.of([200409])

当状态为409时会发生错误,因为请求不会返回JSON,而是返回一个字符串。 我会放一些像

if (pm.response.code == 200) {
    var data = pm.response.json()
    // your code
}
但我强烈建议你,不要这样做! 在测试方面,您希望一个测试只检查一件事情。否则,这很可能会导致误解和增加维护工作量


我建议创建一个请求来创建用户,并进行相应的测试。还有一个,它尝试重新创建用户,同样使用相应的测试。

您可以显示这两种情况的响应主体吗?请查看编辑后的帖子添加您的代码pm.test(“状态测试”,function(){pm.expect(pm.response.code).to.be.oneOf([200,409]);});但是仍然失败当返回409时,我将此作为一个测试结果得到。评估测试脚本时出错:JSONError:1:1用户的意外标记'U'已存在^409状态时,请求不返回JSON,因此,第一行中的
var data=pm.response.JSON()
失败。这就是为什么我添加了
if(code==200){…}
,以便仅在状态为ok且已返回JSON时尝试将响应解析为JSON。