Api 从预请求脚本更改邮递员请求名称

Api 从预请求脚本更改邮递员请求名称,api,testing,postman,Api,Testing,Postman,我目前正在尝试使用CSV数据源实现一些邮递员请求。 例如,假设我有一个名为“以用户身份打开”的请求。 在csv文件中,我有一堆用户凭证,其中包含描述用户角色的描述字段。 我希望能够更改请求名称以反映每个用户角色。 例如,如果请求是作为管理员用户发出的,我希望报告和运行程序中的请求名称是“作为管理员用户打开” 在文档中,我找到了pm.info.requestName变量,但它似乎是只读的。 我在请求前脚本中放了以下内容 pm.info.requestName=“1”; 日志(pm.info.req

我目前正在尝试使用CSV数据源实现一些邮递员请求。 例如,假设我有一个名为“以用户身份打开”的请求。 在csv文件中,我有一堆用户凭证,其中包含描述用户角色的描述字段。 我希望能够更改请求名称以反映每个用户角色。 例如,如果请求是作为管理员用户发出的,我希望报告和运行程序中的请求名称是“作为管理员用户打开”

在文档中,我找到了pm.info.requestName变量,但它似乎是只读的。 我在请求前脚本中放了以下内容

pm.info.requestName=“1”;
日志(pm.info.requestName)

但获得了“作为用户打开”值,而不是指定的“1”


有没有人尝试过同样的把戏,或者知道这是否可能?

恐怕你做不到。pm.request对象仅在请求执行后可用。我甚至认为您不能以您想要的方式访问请求名称(我想我会在'id'成员中找到它,但它是空的)

查看一下关于请求对象的成员和方法的可用性

您可能会找到另一种继续进行的方式(可能会复制您的测试,用admin重命名它,并且在适当的条件下,启动admin请求而不是普通用户请求?仅仅为了一个测试名称就有点麻烦)

我考虑了其他一些事情:您可以定制断言标签,这就是我在TFS报告中使用“可读”测试名称所做的。在“测试”选项卡中:

test_name = "[ "+ request.name + " ] - ";
对于每个断言(示例):

在“响应测试”选项卡中,这提供了如下内容:

PASS [Get all configuration]-Status code is 200
在特定条件下,您可以用自定义字符串替换request.name或do request.name+“admin”


希望这有帮助

我也在寻找解决方案,我已通过以下方式解决了这个问题:

  • 使用“请求前脚本”确定用户的角色
  • 将url设置为环境变量或全局变量
  • 在请求中使用该url,如{{url}
  • 清除“测试”选项卡中的环境或全局变量
在我的例子中,我使用环境变量来获取环境,而不是使用数据变量

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);
希望这有帮助

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);