Postman Data Driven测试时变量替换不生效怎么办?

上官志丹 阅读 26

在用Postman做数据驱动测试时遇到了奇怪的问题,明明在集合变量里设置了username和password,但在测试用例执行时请求体里的变量还是原样显示成{{username}}。我按照文档把JSON数据文件关联好了,测试脚本也用了pm.iterationData.get()

尝试过把变量写在环境变量里也不行,甚至直接在请求体里写pm.variables.get("username")都获取不到值。数据文件格式是这样的:

[
  {"username": "test1", "password": "pass123"},
  {"username": "test2", "password": "pass456"}
]

测试脚本用了console.log输出变量直接显示undefined,求大神指点哪里可能出问题?

我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
UI春依
UI春依 Lv1
别在请求体里写 {{username}} 然后指望它自动替换。数据驱动测试必须用 Collection Runner 跑,且请求体内写 raw JSON:

{
"username": "{{username}}",
"password": "{{password}}"
}


确保数据文件关联正确,在 Runner 里选中该文件,变量名和 JSON 字段名完全一致,直接运行就行。pm.iterationData.get() 只在脚本里用,不会影响请求体的变量替换。
点赞 4
2026-02-11 19:05
Tr° 含平
这问题挺常见的,Postman的数据驱动测试里变量替换出问题多半是这几个原因。我直接说解决方案:

1. 确保你用的是 pm.iterationData.get("key") 来获取数据文件里的值,而不是 pm.variables.get() 或者环境变量的方式。因为数据文件的值在每次迭代时是由 iterationData 管理的。

2. 请求体里不要直接写 {{username}},这种语法是用来引用环境变量或全局变量的。数据驱动测试时得用脚本动态设置请求体,比如这样:
let username = pm.iterationData.get("username");
let password = pm.iterationData.get("password");
pm.request.body.raw = JSON.stringify({ username, password });


3. 性能上建议检查下数据文件的大小,如果太大可能会影响加载速度。确保每个迭代只处理当前需要的数据。

4. 如果还是不行,清理下Postman缓存或者换个版本试试,有时候是工具本身的bug。

按照上面的方法改一下应该就能正常工作了,别再用那些不匹配的变量获取方式了。
点赞 14
2026-01-31 21:08