(三)postman+newman生成测试报告(Mac版)

本文指导如何安装Node.js与Newman插件,导出测试数据和环境变量,执行测试并生成详细的HTML测试报告,包括安装步骤和高级报告定制技巧。

postman生成测试报告的需要安装newman插件

1、安装node.js

地址:https://nodejs.org/en/
根据不同系统下载不同安装包,安装过程傻瓜式操作即可
在这里插入图片描述
安装完成后node -v检查是否安装成功。
在这里插入图片描述

2.使用sudo npm install -g newman 命令:命令执行需要管理员密码,输入密码即可安装
在这里插入图片描述

3.安装newman-reporter-html,执行:sudo npm install -g newman-reporter-html
在这里插入图片描述
4.导出集合,导出后文件为json:
在这里插入图片描述
5.导出环境变量(局部变量or全局变量),导出后文件为json:
在这里插入图片描述

6.将导出的环境变量、全局变量、测试用例数据放到一个文件夹下!

7.执行测试脚本: newman run test.postman_collection.json(集合.json文件) -e 开发.postman_environment.json(环境变量.json) -d data.csv(测试用例数据) -r html(注意⚠️:执行脚本命令必须在当前文件夹下
在这里插入图片描述
8.当前⽂件夹就会出现newman⽂件夹 然后点击进去就会⽣成⼀个html测试报告”的文档
在这里插入图片描述
在这里插入图片描述

9.生成加强版测试报告

先导入报告模块

npm install -g newman-reporter-htmlextra

执行脚本:

run test.postman_collection.json -e 开发.postman_environment.json -d data.csv -r  --reporters htmlextra --reporter-htmlextra-export result1.html

在这里插入图片描述
在这里插入图片描述

补充Newman参数:
1、-e ,–environment : 指定环境文件路径
2、 -g ,–globals : 指定全局变量的文件地址
3、 -d ,–iteration-data : 指定用于迭代的数据源文件路径
4、 -n ,–iteration-count : 指定迭代次数
5、 --folder : 运行集合中指定的文件夹
6、 --timeout (ms) : 设置整个集合运行完成执行的时间
7、 -r , --reporters : 指定用于此次运行的报告类型 cli,xml,json,junit,html,htmlextra
8、 --reporter-json-export jsonReport.json :生成json格式的测试报告(不介意生成,数据过大)
9、 --reporter-xml-export xmlReport.xml :生成xml格式的测试报告
10、 --reporter-html-export htmlReport.html : 生成html格式的测试报告
11、 --reporter-htmlextra-export htmlReport.html : 生成htmlextra格式的测试报告

<think>首先,用户的问题是关于PostmanNewman的:当从Postman导出环境变量时,初始值为空,但当前值有值,然后在执行接口时,无法获取到环境变量中的当前值。用户想知道原因。 我需要基于提供的引用来回答。引用包括: - [^1]: 关于newman生成测试报告的命令,包括使用环境变量文件(-e)和数据文件(-d)。 - [^2]: 关于Postman中的关联接口、全局变量、环境变量等,包括如何设置环境变量。 - [^3]: 类似[^1],关于newman生成报告的命令。 - [^4]: 如何在Postman中自动获取Token并设置到环境变量。 - [^5]: 关于Jenkins的安装,但不太相关。 关键点是环境变量的使用:在Postman中,环境变量有初始值和当前值。当导出环境变量时,初始值可能为空,但当前值有值;然而,当使用Newman运行时,接口无法获取当前值。 原因可能在于Newman如何处理环境变量。Newman是命令行工具,它使用从Postman导出的环境变量文件(通常是JSON格式)。在导出时,环境变量文件可能只包含初始值,而不包含当前值。 从引用[^2]中:"全局变量不受环境影响,在所有的环境都可引用",但用户的问题是关于环境变量的。 引用[^4]展示了如何在Postman中设置环境变量:使用`pm.environment.set("token", response.token);`,这设置了当前值。 当导出环境变量时,在Postman中,导出的是变量的定义,包括初始值。如果初始值为空,而当前值是通过脚本设置的,导出文件可能不包括当前值。 在Newman运行时,它需要环境变量文件(通过`-e`选项指定)。如果这个文件中的初始值为空,Newman可能不会加载任何值,除非在运行时提供。 可能的解决方案:在导出环境变量时,确保导出包括当前值;或者,在Newman命令中直接设置变量。 用户提到"初始值为空 当前值有效",意思是初始值字段是空的,但当前值有内容;然而,当接口运行时,它无法获取这个值。 原因:Newman在运行时使用环境变量文件中的初始值。如果初始值为空,Newman可能将该变量视为未定义。 从Postman的行为:环境变量在集合运行期间可以改变,但导出时,文件可能只保存初始状态。 参考引用[^3]:"newman run 测试集文件 -e 环境变量文件",环境变量文件应该包含所有需要的变量值。 如果环境变量文件中的值初始为空,Newman可能不会覆盖它,除非在命令中指定。 最佳实践:在导出环境变量时,确保所有变量都有初始值;或者,在Postman中,在运行集合前设置好环境变量,然后导出。 在回答中,我需要结构化: 1. 解释问题原因。 2. 提供解决方案。 3. 生成相关问题。 回答必须使用中文,遵循LaTeX格式:行内数学表达式用$...$,独立公式用$$...$$(但这个问题可能不需要数学公式)。 系统指令要求生成相关问题。 最后,引用标识:在回答中引用的部分末尾添加[^n]。 基于引用: - [^1] 提到环境文件的使用。 - [^2] 提到设置环境变量。 - [^4] 提到设置Token到环境变量。 所以,我可以引用这些。 回答结构: - 先澄清问题。 - 解释原因。 - 给出解决方法。 - 生成相关问题。</think>### Postman Newman 测试报告中环境变量初始值为空导致接口无法获取值的原因分析 在使用 PostmanNewman 生成测试报告时,环境变量的“初始值”(Initial Value)为空而“当前值”(Current Value)有效,但接口执行时无法获取变量值的问题,常见于环境变量导出和 Newman 运行时处理机制不一致。以下我将逐步解释原因、提供解决方案,并基于最佳实践给出建议。问题根源在于 Postman 导出环境变量文件时只包含初始值,而 Newman 在命令行运行时仅读取该初始值,忽略当前值[^1][^2]。 #### 原因详细分析 1. **Postman 环境变量机制**: - 在 Postman 中,环境变量分为“初始值”和“当前值”。初始值是变量定义时的默认值(可为空),当前值是通过脚本(如预请求脚本或测试脚本)动态设置的值。例如,引用[^4] 中代码展示了如何通过 `pm.environment.set("token", response.token)` 设置当前值。 - 当导出环境变量时(如导出为 JSON 文件),Postman 默认只保存**初始值**,而不包括运行时生成的当前值[^2][^3]。如果初始值为空,导出的文件(如 `environment.json`)中该变量值将为空字符串或 `null`。 2. **Newman 运行时行为**: - Newman 是命令行工具,通过 `-e` 参数指定环境变量文件(如 `newman run collection.json -e environment.json`)。Newman 严格使用该文件中的值作为变量的**初始状态**,不会继承 Postman 中的当前值[^1][^3]。 - 如果环境变量文件中的初始值为空,Newman 会将该变量视为未定义(`undefined`)。因此,接口请求中引用该变量(如 `{{token}}`)时,无法解析值,导致请求失败或错误。 3. **关键矛盾点**: - 用户可能在 Postman UI 中通过脚本设置了当前值(如登录接口获取 Token),但导出时未更新初始值。导出文件仅反映初始状态,而 Newman 运行时无法访问 Postman 的运行时上下文,因此接口获取不到值[^2][^4]。 #### 解决方案 要解决此问题,需确保环境变量文件包含有效值,而非依赖当前值。以下是具体步骤: 1. **在 Postman 中更新初始值**: - 在导出环境变量前,手动将当前值复制到初始值: - 打开 Postman 环境管理界面(Environments)。 - 对于每个变量,编辑“Initial Value”字段,填入当前值(或通过脚本同步)。 - 然后导出环境变量文件(JSON 格式)。这样导出的文件初始值不再为空,Newman 能正确加载[^2][^4]。 2. **使用脚本自动设置初始值**: - 在集合的预请求脚本(Pre-request Script)中添加代码,自动将当前值写入环境变量并确保初始值有效。例如: ```javascript // 示例:如果 token 初始值为空,则设置初始值 if (!pm.environment.get("token")) { pm.environment.set("token", "default_value"); // 设置默认值 } // 运行中更新当前值(如从响应获取) pm.environment.set("token", response.token); // 引用[^4] 类似逻辑 ``` - 导出前运行集合一次,确保初始值被更新。 3. **Newman 命令中直接覆盖变量**: - 如果无法修改环境文件,可在 Newman 命令中通过 `--env-var` 参数动态设置变量值: ```bash newman run collection.json -e environment.json --env-var "token=your_current_value" ``` 这优先使用命令行指定的值,忽略文件中的空初始值[^1][^3]。 4. **验证和测试**: - 导出后检查环境文件:确保 JSON 文件中的 `values` 数组包含非空 `value` 字段。 - 运行 Newman 时添加调试:使用 `--verbose` 标志查看变量加载情况: ```bash newman run collection.json -e environment.json --verbose ``` #### 最佳实践建议 - **始终设置初始值**:在定义环境变量时,避免初始值为空。赋予默认值(如 `""` 或占位符),防止导出问题。 - **分离敏感数据**:对于动态值(如 Token),使用数据文件(`-d` 参数)或外部脚本管理,而非依赖环境变量导出[^1][^3]。 - **自动化处理**:在 CI/CD 流程(如 Jenkins)中,通过脚本预填充环境文件,确保 Newman 运行可靠[^5]。 通过以上方法,可解决环境变量初始值为空导致的接口取值失败问题。如果问题持续,检查 Postman 本兼容性或变量作用域(环境变量 vs. 全局变量)[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值