【问题标题】:Changing Postman request name from prerequest script从预请求脚本更改 Postman 请求名称
【发布时间】:2018-02-28 15:38:31
【问题描述】:

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

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

pm.info.requestName = "1"; console.log(pm.info.requestName);

但得到“以用户身份打开”值而不是分配“1”。

有没有人尝试过同样的伎俩或知道这是否可能?

【问题讨论】:

    标签: api testing postman


    【解决方案1】:

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

    查看here 以了解有关请求对象的成员和方法方面的可用内容。

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

    我想到了其他事情:您可以自定义您的断言标签,这就是我在 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" ...

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      我也在寻找解决方案,我已经通过以下方式解决了它:

      • 使用“预请求脚本”来确定用户的角色。
      • 将 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);
      

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2020-02-29
        • 2022-01-16
        • 2023-02-01
        • 2018-11-15
        • 2017-01-25
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 2018-12-10
        相关资源
        最近更新 更多