我目前正在尝试使用CSV数据源实现少量Postman请求。 例如,假设我有一个名为“以用户身份打开”的请求。 在csv文件中,我有大量用户凭据和描述用户角色的描述字段。 我希望能够更改请求名称以反映每个用户角色。 例如,如果请求是作为管理员用户发出的,我想在报告中请求名称,并且跑步者是“以用户管理员身份打开”。
在文档中,我发现了pm.info.requestName变量,但似乎它是只读的。 我在预请求脚本
中添加了以下内容 pm.info.requestName = "1";
console.log(pm.info.requestName);
但获得“以用户身份打开”值而非分配“1”。
有没有人试图做同样的伎俩或者知道它是否可行?
答案 0 :(得分:1)
我也在寻找解决方案,我已经通过以下方式解决了这个问题:
在我的情况下,我使用环境变量来获取环境,而不是使用数据变量。
var environment = pm.environment.get("environment");
var url;
switch(environment) {
case "test":
url = pm.globals.get("test-url");
break;
case "acc":
url = pm.globals.get("acc-url");
break;
case "prod":
url = pm.globals.get("prod-url");
break;
default:
url = pm.globals.get("test-url");
break;
}
pm.environment.set("url", url);
希望这有帮助!
答案 1 :(得分:0)
我担心你不能这样做。 pm.request对象仅在请求执行后可用。我甚至认为你不能按照你想要的方式访问请求名称(虽然我会在'id'成员中找到它,但它是空的)
查看here,了解有关请求对象的成员和方法的可用内容。
您可能会发现另一种处理方式(可能重复您的测试,使用管理员重命名,并在适当的条件下启动管理员请求而不是普通用户请求?这对于测试名称来说是一种麻烦)
我考虑其他事情:你可以只定制你的断言标签,这就是我在TFS报告中拥有'可读'测试名称的方法。在“测试”选项卡中:
test_name = "[ "+ request.name + " ] - ";
和每个断言(例子):
tests[test_name + "Status code is 200"] = responseCode.code === 200;
这在响应测试选项卡中给出了类似的内容:
PASS [Get all configuration]-Status code is 200
在特定情况下,您可以将request.name替换为自定义字符串,或者执行request.name +“admin”...
希望这会有所帮助