量角器持久变量

时间:2017-04-07 03:42:54

标签: javascript angularjs selenium-webdriver protractor angularjs-e2e

我正在尝试在Postman中设置类似于环境/全局变量的东西。 Postman将这些变量存储在JSON中,当您在测试中修改它们时,它们将永久更改为新值。例如:

postman.setEnvironmentVariable("variable1", parseInt(postman.getEnvironmentVariable) +1);

此函数会在请求开始时将环境变量增加1。在我真正的Postman测试中,我使用自定义函数根据以前使用的条形码计算有效的EAN13条形码,因为它们必须是唯一的。

在量角器中有没有这样的东西?

2 个答案:

答案 0 :(得分:1)

使用'params'对象存储数据。您可以在配置文件中进行设置。 config

params: {
      login: {
        user: 'Jane',
        password: '1234'
      }
    }

browser.params.login等浏览器对象访问。您可以更改可在另一个测试中检索的对象的值。

答案 1 :(得分:0)

我找到了一个优雅的解决方案。我在JSON对象中导入params,如下所示:

global.DATA_PATH = './data/environment.json';
global.fs = require(fs);
exports.config = {
    ...
    params: {
        data = require(global.DATA_PATH)
    }
    ...
};

然后在我的JSON对象中,我将像这样定义数据:

{
    "variable1": "blah"
}

现在,我可以通过代码中的常规对象点表示法访问我的数据:

this.modifyVariable1 = function(value) {
    params.data.variable1 = value;
}

由于这只是修改了参数中的变量params.data.variable1,因此我使用fs中的nodejs模块afterAll将其与文件同步:

afterAll(function() {
    global.fs.writeFile(global.DATA_PATH, (JSON.stringify(params.data), null, 4), 'utf8);
});

只有在完成规范时才需要运行,因为对params对象的更改会在每个it语句中持续存在。

希望这有助于其他想尝试类似事情的人!