如何从Postman Collection Runner Results导出/下载Response Body到外部文件?

Din*_*ngh 8 postman postman-collection-runner

我正在开发一个项目,我必须使用不同的变量值多次访问Web服务

例如,http://mywebservice.com?variable1 = {{value}}

并使用Postman集合运行器传递不同的值.

我想将所有请求的响应主体下载到文件中.我怎么做?

bom*_*ets 9

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

首先,您需要创建一个环境(这篇关于 Postman 的博文中的精彩教程),并定义一个名为 的变量responseData,其值为[]

然后,在 Builder 中的“Tests”下添加以下代码并保存您的集合。Postman 环境变量旨在用作字符串,因此我们将解析对象,然后将来自 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"));
Run Code Online (Sandbox Code Playgroud)

现在,您可以通过查看环境变量值来检索包含所有响应数据的嵌套 JSON 对象(请参见下面的示例)。

警告您必须在每次使用responseData[]Collection Runner重置该值,以避免保留以前运行的数据。


Man*_*ngh 8

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

首先,您需要将集合和环境导出为 JSON 文件。然后使用以下命令安装 newman:

sudo npm install -g newman
Run Code Online (Sandbox Code Playgroud)

然后,如果您想要一个整洁的 HTML 报告结果,那么首先newman-reporter-html使用以下命令安装外部报告

sudo npm install -g newman-reporter-html
Run Code Online (Sandbox Code Playgroud)

您现在可以通过运行以下命令来生成报告:

newman run <path to your collection json file> -e <path to your environment json file> -r cli,html
Run Code Online (Sandbox Code Playgroud)

默认情况下,HTML 文件将不包含请求和响应正文。为了渲染它,首先下载默认的把手模板,然后稍微调整一下。您可以在此处找到默认车把模板。下载文件并将其另存为template.hbs. 然后在任何编辑器中打开它并查找它呈现Status Code. 它可能看起来像这样:

<div class="col-md-12">&nbsp;</div>
<br/><div class="col-md-4">Status code</div><div class="col-md-8">{{response.code}}</div><br/>
Run Code Online (Sandbox Code Playgroud)

在这部分下方,添加以下几行:

<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/>
Run Code Online (Sandbox Code Playgroud)

现在您可以运行以下命令来呈现带有请求和响应正文的 HTML:

newman run <path to your collection json file> -e <path to your environment json file> -r cli,html --reporter-html-template template.hbs
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 刚刚使用建议更改的模板创建了一个要点=&gt; https://gist.github.com/fmancardi/56844e80819830aae1fbfcc6376795c7 (3认同)

Dan*_*ton 7

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

对于单个请求,您可以使用Send and Download选项,该选项将向您显示响应正文:

在此处输入图片说明

我敢肯定,您可以采取一些解决方法将响应正文保存为环境或全局变量,然后在以后将其导出,但这似乎是一个笨拙且稍有改动的解决方案。

pm.globals.set('response_body', JSON.stringify(pm.response.json()))
Run Code Online (Sandbox Code Playgroud)

但是,这每次都会被覆盖,因此您每次都需要更改变量名称,或者在代码中进行某些更改以更改其名称,以获取唯一的变量集。

然后可以使用该Manage Environment部分将其导出并本地保存。