0

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

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

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

有没有这样的东西可以在量角器中实现?

回答

0

我发现了一个优雅的解决方案。导入我的params在一个JSON对象,象下面这样:

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,我通过使用模块的NodeJS与文件同步,它10 afterAll

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

这只需要在规范做是因为更改params对象坚持通过每个it语句运行。

希望这可以帮助那些想尝试类似的人!

1

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

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

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

+0

但是,一旦所有测试运行,参数是否会重置回原来的状态?这是行不通的,因为EAN13条码突然不再是唯一的了,我必须推断每次运行测试时使用哪个条码。 – esiroky

+0

你是对的,测试完成后它不会持续。 process.env.some变量也不会使这永久。如何将这个值存储在文件中? – Grasshopper

+0

我确实想到了这一点,但我无法找到任何方式以任何方式做到这一点。我应该定义一个没有实际意义的全局变量,然后定义一个辅助函数并在Jasmine的beforeEach或afterEach函数中调用它? – esiroky