我正在开发一个项目,我必须使用不同的变量值
多次访问Web服务例如,http://mywebservice.com?variable1= {{value}}
使用Postman集合运行器传递不同的值。
我想将所有请求的响应主体下载到文件中。我该怎么做?
答案 0 :(得分:4)
我不认为您可以在集合运行器中下载请求的响应主体 - 您可以导出测试结果,但我不确定它是否包含响应正文数据。您还可以单击跑步者中的每个请求并查看响应正文,但这仍然在UI中。
对于个别请求,您可以使用Send and Download
选项,该选项将显示响应正文:
我确信您可以采取一些解决方法将响应主体保存为环境或全局变量,然后将其导出,但这似乎是一个尴尬且略有破解的解决方案。
pm.globals.set('response_body', JSON.stringify(pm.response.json()))
每次都会被覆盖,因此您需要每次都更改变量名称,或者在代码中添加一些内容来更改其名称,以获得一组唯一的名称。
然后可以使用Manage Environment
部分导出和保存这些内容。
答案 1 :(得分:2)
如果可以将最终数据存储在环境变量中,然后在Collection Runner完成后将其复制到文本编辑器中的.JSON文件中,可以采用以下简单的解决方法。
首先,您需要创建一个环境(在Postman上为great tutorial in this blog post),并定义一个名为responseData
的变量,其值为[]
。
然后,在Builder的“测试”下添加以下代码,并保存您的收藏集。邮递员环境变量旨在用作字符串,因此我们将解析对象,然后将来自API的JSON响应推送到对象数组中。
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"));
现在,您可以通过查看环境变量值来检索包含所有响应数据的嵌套JSON对象(请参见下面的示例)。
警告:您必须在每次使用Collection Runner之后将responseData
的值重置为[]
,以避免保留以前运行的数据
答案 2 :(得分:1)
通过运行本地服务器,然后在Postman中使用scripts构建发送到该服务器的请求,您可以写入文件系统。
这是一篇关于how to do that using the collection runner的博客文章。你也可以做同样的事情using Newman。
对于您的项目,您可以将响应主体存储在变量中,然后将该变量作为POST请求中的有效内容传递给本地服务器。您的本地服务器将监听POST请求,并将数据写入您的文件系统。
答案 3 :(得分:1)
从这里获取提示 - http://blog.getpostman.com/2017/09/01/write-to-your-local-file-system-using-a-postman-collection/,下面是我编写的nodeJS服务器,它将捕获请求和响应并逐个打印它们以及请求名称(您在Postman中设置)和URL。 / p>
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));
}
});
要运行上述代码,您需要安装newman,这是Postman的CLI。 首先在您的计算机上安装node和npm,然后转到您的目录并通过 -
安装newman npm install newman
然后将上述代码复制粘贴到js文件&#39; filename.js&#39;并通过以下命令运行它 -
node filename.js
包含您需要的信息的输出将保存在名为&#34; test.html&#34;的文件中。在同一目录中。
答案 4 :(得分:1)
我遇到了这种情况,并使用CLI工具newman
解决了首先,您需要将集合和环境导出为JSON文件。然后使用以下命令安装newman:
sudo npm install -g newman
然后,如果您想要一个整洁的HTML报告作为结果,则首先使用以下命令安装外部报告的newman-reporter-html
sudo npm install -g newman-reporter-html
您现在可以通过运行以下命令来生成报告:
newman run <path to your collection json file> -e <path to your environment json file> -r cli,html
默认情况下,HTML文件将不包含请求和响应正文。为了进行渲染,请先下载默认的车把模板,然后对其进行一些调整。您可以找到默认的车把模板here。下载文件并将其另存为template.hbs
。然后在任何编辑器中将其打开,并在呈现Status Code
的位置查找代码。可能看起来像这样:
<div class="col-md-12"> </div>
<br/><div class="col-md-4">Status code</div><div class="col-md-8">{{response.code}}</div><br/>
在此部分下面,添加以下行:
<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/>
现在,您可以运行以下命令以使用请求和响应正文呈现HTML:
newman run <path to your collection json file> -e <path to your environment json file> -r cli,html --reporter-html-template template.hbs
希望这会有所帮助!