Je travaille sur un projet où je dois utiliser plusieurs fois un service Web avec différentes valeurs d'une variable
Par exemple, http://mywebservice.com?variable1= {{valeur}}
et différentes valeurs sont transmises à l'aide de Postman Collection Runner.
Je souhaite télécharger le corps de réponse de toutes les demandes dans un fichier. Comment je fais ça?
Je ne pense pas que vous pouvez télécharger le corps de réponse de la demande dans le programme de collecte. Vous pouvez exporter les résultats du test, mais je ne suis pas sûr qu'il contienne les données du corps de réponse. Vous pouvez également cliquer sur chaque demande dans le coureur et voir le corps de la réponse, mais cela se trouve toujours dans l'interface utilisateur.
Pour les demandes individuelles, vous pouvez utiliser l'option Send and Download
, qui affiche le corps de la réponse:
Je suis certain que vous pouvez contourner le problème afin de sauvegarder le corps de la réponse sous forme d'environnement ou de variable globale, puis de l'exporter ultérieurement, mais cela semble être une solution peu commode et délicate.
pm.globals.set('response_body', JSON.stringify(pm.response.json()))
Cependant, ceci serait écrasé à chaque fois. Vous devrez donc changer le nom de la variable à chaque fois ou insérer quelque chose dans votre code pour en changer le nom et en obtenir un ensemble unique.
Ceux-ci peuvent ensuite être exportés et enregistrés localement à l'aide de la section Manage Environment
.
Prenant allusion d'ici - http://blog.getpostman.com/2017/09/01/write-to-your-local-file-system-using-a-postman-collection/ , ci-dessous est un noeudJS serveur que j’ai écrit, qui capturera les demandes et les réponses et les imprimera un à un avec le nom de la demande (que vous avez défini dans Postman) et l’URL.
var fs = require('fs'),
newman = require('newman'),
allRequest =[],
allResponse = [],
allName = [],
requestUrl = "",
allRequestUrl = [];
newman.run({
collection: '//your_collection_name.json',
iterationData: 'your_iteration_file',
iterationCount : 3
})
.on('request', function (err, args) {
if (!err) {
//console.log(args); // --> args contain ALL the data newman provides to this script.
var requestBody = args.request.body,
request = requestBody.toString();
allRequest.Push(JSON.parse(request));
var responseBody = args.response.stream,
response = responseBody.toString();
allResponse.Push(JSON.parse(response));
var nameBody = args.item.name;
allName.Push(nameBody);
var protocol = args.request.url.protocol;
var Host = args.request.url.Host;
var path = args.request.url.path;
requestUrl+=protocol+"://";
for(var j = 0;j<Host.length;j++)
{
requestUrl+= Host[j];
if(j!=Host.length-1)
{
requestUrl+=".";
}
}
requestUrl+='/';
for (var k =0;k<path.length;k++)
{
requestUrl+= path[k];
if(k!=path.length-1)
{
requestUrl+= "/";
}
}
allRequestUrl.Push(requestUrl);
}
})
.on('done', function (err, summary) {
fs.writeFile('test.html',"");
//modify html output here.
for(var i =0;i<allRequestUrl.length;i++)
{
fs.appendFileSync('test.html', "<br><h>Name: </h>");
fs.appendFileSync('test.html',allName[i]);
fs.appendFileSync('test.html', "<br><h>URL: </h>");
fs.appendFileSync('test.html',"\"" + allRequestUrl[i] + "\"");
fs.appendFileSync('test.html', "<br><h>Request</h><br>");
fs.appendFileSync('test.html',JSON.stringify(allRequest[i],null,4));
fs.appendFileSync('test.html', "<br><h>Response</h><br>");
fs.appendFileSync('test.html',JSON.stringify(allResponse[i],null,5));
//fs.writeFileSync('migration-report.json', JSON.stringify(results, null, 4));
}
});
Pour exécuter le code ci-dessus, vous devez installer newman, qui est le CLI de Postman. Tout d’abord, installez node et npm sur votre ordinateur, puis allez dans votre répertoire et installez newman via -
npm install newman
Copiez ensuite le code ci-dessus dans un fichier js 'filename.js' et exécutez-le avec la commande ci-dessous -
node filename.js
La sortie contenant les informations requises sera enregistrée dans un fichier nommé "test.html" situé dans le même répertoire.
Voici une solution de contournement simple si vous voulez bien stocker les données finales dans une variable d’environnement et les copier dans un fichier .JSON dans un éditeur de texte à la fin de Collection Runner.
Vous devez d’abord créer un environnement ( excellent tutoriel dans ce billet de blog sur Postman), puis définir une variable appelée responseData
, avec la valeur []
.
Ensuite, ajoutez le code suivant sous "Tests" dans Builder et enregistrez votre collection. Les variables d'environnement Postman sont destinées à être utilisées en tant que chaîne. Nous allons donc analyser l'objet, puis transférer les réponses JSON de l'API dans le tableau d'objets.
var jsonData = JSON.parse(responseBody);
var old = pm.environment.get("responseData");
old = JSON.parse(old);
// filter jsonData if needed
old.Push(jsonData);
old = JSON.stringify(old);
pm.environment.set("responseData", old);
console.log(pm.environment.get("responseData"));
Vous pouvez maintenant récupérer un objet JSON imbriqué avec toutes les données de réponse incluses en affichant la valeur des variables d'environnement (voir l'exemple ci-dessous).
Avertissement: vous devez redéfinir la valeur responseData
en []
après chaque utilisation de Collection Runner afin d'éviter de conserver les données des exécutions précédentes.
En exécutant un serveur local, puis en utilisant scripts dans Postman pour créer une demande à envoyer à ce serveur, vous pouvez écrire sur votre système de fichiers.
Voici un article de blog sur comment faire cela en utilisant le coureur de collection . Vous pouvez également faire la même chose en utilisant Newman .
Pour votre projet, vous pouvez stocker le corps de la réponse dans une variable, puis transmettre cette variable en tant que charge utile dans une demande POST à votre serveur local. Votre serveur local écoute les demandes POST et écrit les données dans votre système de fichiers.
J'ai fait face à cette situation et l'ai résolue à l'aide de l'outil CLI newman
Vous devez d’abord exporter votre collection et l’environnement sous forme de fichiers JSON. Puis installez newman en utilisant la commande:
Sudo npm install -g newman
Ensuite, si vous voulez un rapport HTML soigné pour les résultats, commencez par installer le newman-reporter-html
externe signalé avec la commande ci-dessous.
Sudo npm install -g newman-reporter-html
Vous pouvez générer le rapport maintenant en exécutant la commande suivante:
newman run <path to your collection json file> -e <path to your environment json file> -r cli,html
Par défaut, le fichier HTML ne contiendra pas le corps de la demande et de la réponse. Pour le rendre, commencez par télécharger le modèle de guidon par défaut, puis ajustez-le un peu. Vous pouvez trouver le modèle de guidon par défaut ici . Téléchargez le fichier et enregistrez-le sous le nom template.hbs
. Puis ouvrez-le dans n’importe quel éditeur et cherchez le code dans lequel il rend le Status Code
. Cela pourrait ressembler à ceci:
<div class="col-md-12"> </div>
<br/><div class="col-md-4">Status code</div><div class="col-md-8">{{response.code}}</div><br/>
Sous cette partie, ajoutez les lignes suivantes:
<div class="col-md-12"> </div>
<br/><div class="col-md-4">Request body</div>
<div class="col-md-8">
<textarea class="json" disabled rows="8" cols="70">
{{request.body}}
</textarea>
</div><br/>
<div class="col-md-12"> </div>
<br/><div class="col-md-4">Response body</div>
<div class="col-md-8">
<textarea class="json" disabled rows="8" cols="70">
{{response.body}}
</textarea>
</div><br/>
Vous pouvez maintenant exécuter la commande suivante pour rendre le code HTML avec le corps de la requête et de la réponse:
newman run <path to your collection json file> -e <path to your environment json file> -r cli,html --reporter-html-template template.hbs
J'espère que cela t'aides!