web-dev-qa-db-fra.com

Comment tester si la taille d'un objet est supérieure à un certain nombre avec POSTMAN

J'essaie de faire un test dans POSTMAN où la taille doit être supérieure à 0 mais je n'ai pas pu faire le test correctement.

Ce que j'ai fait était de le faire échouer lorsque la taille est inférieure à 0.

Y at-il une fonction dans postman pour vérifier si la taille est supérieure à x nombre?

    pm.test("Step 7/ Getting the resources and availabilites list " , function(){

    pm.expect(pm.response.code).to.be.oneOf([200]);
    if(pm.response.code === 200){
        var jsonData = JSON.parse(responseBody);
        var sizeOK= 1;
        if(jsonData.resources.length>0){

        }else{
            //I will make the test fail if there is not data available on the response.
            pm.test("Response body is empty ", function () {
                pm.expect(pm.response.json().resources.length).to.equal(1);
            });

        }
        console.log(Boolean(jsonData.resources.length>1))
    }

});
6
mavi
pm.expect(pm.response.json().resources.length).to.be.above(0);

Voir http://www.chaijs.com/api/bdd/

8
anti_gone

Postman utilise une implémentation étendue de la bibliothèque chai . Vous pouvez consulter le code source ici: https://github.com/postmanlabs/chai-postman

Donc logiquement, le test échoue uniquement lorsque vous générez une erreur et que le test la détecte . Sinon, il passe simplement . Ainsi, les appels attendus génèrent en réalité une erreur qui fait échouer le test. Si vous retournez simplement quelque chose ou peut-être rien, alors le test sera réussi.

Pensez en termes d'essais simples et d'interception du bloc… .. Ainsi, pour résoudre votre problème instantanément, vous pouvez simplement renvoyer une erreur et votre test échouerait.

Vous pouvez modifier votre code comme suit:

pm.test("Step 7/ Getting the resources and availabilites list " , function(){

    pm.expect(pm.response.code).to.be.oneOf([200]);
    if(pm.response.code === 200){
        var jsonData = JSON.parse(responseBody);
        var sizeOK= 1;
        if(jsonData.resources.length>0){

        } else {
            pm.test("Response body is empty ", function () {
               throw new Error("Empty response body"); // Will make the test fail.
            });

        }
        console.log(Boolean(jsonData.resources.length>1))
    }

});

En outre, vous pouvez en outre utiliser du javascript simple pour tester la longueur/taille facilement (ainsi, par exemple):

pm.test("Step 7/ Getting the resources and availabilites list " , function(){

        pm.expect(pm.response.code).to.be.oneOf([200]);
        if(pm.response.code === 200){
            var jsonData = JSON.parse(responseBody);
            var sizeOK= 1;
            if(jsonData.resources.length>0){

            } else {
                pm.test("Response body is empty ", function () {
                   if(jsonData.length < 3) {
                      throw new Error("Expected length to be greater than 3");
                   }
                });

            }
            console.log(Boolean(jsonData.resources.length>1))
        }

    });
2
Sivcan Singh

Même si je ne suis pas sûr du degré de précision dont vous avez besoin, vous obtenez une taille de réponse dans Postman. Il est composé de la taille du corps et de la taille des en-têtes (il suffit de pointer sur la valeur de Size dans l'application). Dans votre zone de test, vous pouvez récupérer la taille du corps en effectuant les actions suivantes: 

var size=0;
for (var count in responseBody) {
    if(responseBody.hasOwnProperty(count))
        size += 1;
}
console.log("BODY SIZE = " + size); // you'll see the correct value in the console for the body part

et ensuite tester contre cette valeur ...

0
A.Joly