如何将响应正文从Postman Collection Runner结果导出/下载到外部文件中?

如何将响应正文从Postman Collection Runner结果导出/下载到外部文件中?,postman,postman-collection-runner,Postman,Postman Collection Runner,我正在从事一个项目,在这个项目中,我必须使用不同的变量值多次访问web服务 例如,{{value}} 使用Postman collection runner传递不同的值 我想将所有请求的响应体下载到一个文件中。如何做到这一点?我认为您无法在collection runner中下载请求的响应正文-您可以导出测试结果,但我不确定其中是否包含响应正文数据。您还可以单击runner中的每个请求并查看响应正文,但这仍然都在UI中 对于单个请求,您可以使用发送和下载选项,该选项将显示响应正文: newman

我正在从事一个项目,在这个项目中,我必须使用不同的变量值多次访问web服务

例如,{{value}}

使用Postman collection runner传递不同的值

我想将所有请求的响应体下载到一个文件中。如何做到这一点?

我认为您无法在collection runner中下载请求的响应正文-您可以导出测试结果,但我不确定其中是否包含响应正文数据。您还可以单击runner中的每个请求并查看响应正文,但这仍然都在UI中

对于单个请求,您可以使用
发送和下载
选项,该选项将显示响应正文:

newman run <path to your collection json file> -e <path to your environment json file> -r cli,html --reporter-html-template template.hbs

我相信您可以做一些变通,将响应主体保存为一个环境或全局变量,然后再导出它,但这似乎是一个笨拙的、有点黑客攻击的解决方案

pm.globals.set('response_body', JSON.stringify(pm.response.json()))
但是每次都会被覆盖,所以每次都需要更改变量名,或者在代码中添加一些内容来更改其名称,以获得唯一的变量集


然后可以使用
管理环境
部分导出并本地保存这些文件

通过运行本地服务器,然后使用in-Postman构建发送到该服务器的请求,您可以写入文件系统

这里有一篇关于你的博客文章。你也可以做同样的事情

对于您的项目,您可以将响应主体存储在一个变量中,然后在POST请求中将该变量作为有效负载传递给本地服务器。您的本地服务器将侦听POST请求,并将数据写入您的文件系统。

从这里得到提示-,下面是我编写的nodeJS服务器,它将捕获请求和响应,并将它们与请求名称(您已在Postman中设置)和URL一起逐个打印

然后将上述代码复制粘贴到js文件“filename.js”中,并通过下面的命令运行它-

    node filename.js

包含所需信息的输出将保存在同一目录中名为“test.html”的文件中。

如果您可以将最终数据存储在环境变量中,只需在Collection Runner完成后将其复制到文本编辑器中的.JSON文件中,这里有一个简单的解决方法

首先,您需要创建一个环境(在Postman上),并定义一个名为
responseData
的变量,其值为
[]

然后,在Builder中的“测试”下添加以下代码并保存集合。Postman环境变量旨在用作字符串,因此我们将解析对象,然后将JSON响应从API推送到对象数组中

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
值重置为
[]
,以避免保留以前运行的数据。

我遇到了这种情况,并使用CLI工具解决了它

首先,您需要将集合和环境导出为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
在此部分下方,添加以下行:

<div class="col-md-12">&nbsp;</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">&nbsp;</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/>


请求正文 {{request.body}

响应体 {{response.body}
现在,您可以运行以下命令来呈现带有请求和响应正文的HTML:

newman run <path to your collection json file> -e <path to your environment json file> -r cli,html --reporter-html-template template.hbs
newman run-e-rcli,html--reporter html template template.hbs

希望这有帮助

这对我有帮助!A+你是救命恩人刚刚用建议更改=>的模板创建了一个要点该解决方案能在flask python中帮助我吗?嗨,我只是在生成的html中保存第一个请求,即使我运行了不止一个请求,你知道为什么会这样吗?我的命令如下:newman run latina.postman_collection.json-d data.json-rcli,html--reporter html template.hbs
<div class="col-md-12">&nbsp;</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">&nbsp;</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/>
newman run <path to your collection json file> -e <path to your environment json file> -r cli,html --reporter-html-template template.hbs