Postman newman lidar com códigos de status

Sep 22 2020

Eu tenho uma pergunta se é possível ter mais de um código de status de teste. O caso é 201 quando o usuário é criado e 409 quando o usuário já existe quando eu executo novamente os casos de teste com o mesmo lote de usuários. 201 é tratado, mas 409 não. uma

 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 ^

EDITAR:

Pois 200estou recebendo um objeto de usuário, não posso postar este objeto aqui

para 409string O usuário já existe

Respostas

1 ChristianBaumann Sep 22 2020 at 19:47

Uma maneira mais elegante de testar o status 200 ou 409 seria:

pm.expect(pm.response.code).to.be.oneOf([200, 409]);

O erro ocorre quando o status é 409, pois a solicitação não retorna JSON, mas uma string. Eu colocaria algo como

if (pm.response.code == 200) {
    var data = pm.response.json()
    // your code
}

Mas eu te aconselho fortemente a não fazer isso! Em termos de teste, você deseja que um teste verifique apenas uma coisa. Caso contrário, isso provavelmente levará a mal-entendidos e a um maior esforço de manutenção.

Eu proporia a criação de um pedido para criar usuários, com os testes correspondentes. E outro, que tenta recriar os usuários, novamente com os respectivos testes.