2017-09-19 64 views
1

我正在尝试使用CSV数据源实施几个邮递员请求。 例如,假设我有名为“以用户身份打开”的请求。 在csv文件中,我有许多描述用户角色的描述字段的用户凭证。 我希望能够更改请求名称以反映每个用户角色。 例如,如果请求是以管理员用户的身份提出的,我希望报告和runner中的请求名称为“以用户管理员身份打开”。从预先请求脚本更改邮递员请求名称

在文档中,我找到了pm.info.requestName变量,但似乎它是只读的。 我把剧本

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

按照预先的要求,但得到了“打开为用户”值,而不是分配“1”。

有没有人试图做同样的伎俩,或知道它是否有可能?

回答

0

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

看看here看看有什么可用的与请求对象有关的成员和方法。

您可能会发现另一种处理方式(可能会复制您的测试,将其重命名为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”...

希望这个帮助

1

我一直在寻找一个解决这个问题,以及和我已经通过以下方式解决了这个问题:

  • 使用“预请求脚本”,以确定用户有什么样的作用。
  • 设置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); 

希望这有助于!