WebdriverIO - 如何向 Jasmine 测试发送参数?
WebdriverIO - How to send arguments to Jasmine tests?
我有一堆Webdriver.io/Selenium tests, and I'm using the jasmine test framework to write my tests in, so I have a wdio.conf.js file that I have configured to use jasmine, as per these instructions
问题是我正在测试一个基于 ad/marketing 的 Web 应用程序,该应用程序高度 dynamic/configurable,并且需要我传递大量配置信息,以便测试知道要测试什么.例如在命令行我想 运行 类似的东西:
> wdio --campaignId=123 --productId=456
我可以修改 wdio.conf.js 文件中的 'onPrepare' function/event 来获取这些参数,如下所示:
exports.config = {
....other options (snip)...
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 9999999,
expectationResultHandler: function (passed, assertion) { }
},
onPrepare: function (config) {
var campaignId = parseInt(process.argv[2]
.replace('--campaignId=', ''));
var productId = parseInt(process.argv[3]
.replace('--productId=', ''));
config.params = {
campaignId: campaignId,
productId: productId
};
}
};
...但我不知道如何将这些传递给我的茉莉花测试。我尝试从 process.argv 读取数据,但缺少 campaignId 和 productId 参数,例如
describe('Campaign Tests', function () {
beforeEach(function(done) {
browser
.session(function(err, client) {
var campaignId = parseInt((process.argv[2] || '')
.replace('--campaignId=', ''));
var productId = parseInt((process.argv[3] || '')
.replace('--productId=', ''));
// campaignId and productId are both NaN/undefined
});
});
it('should test something...snip...
如何将自定义 params/arguments 传递给我的 jasmine 测试?我可以将它们写入 onPrepare 中的文件,然后在 jasmine 测试中读取该文件,这似乎有点 hacky。
我建议使用环境变量来解决此问题。
因此,例如,您可以 运行 您的测试,例如 VARIABLE=1 wdio wdio.config.js
,然后在您的测试中,您可以使用 process.env.VARIABLE
轻松访问它
如果您正在使用一些构建工具,例如 gulp、g运行t 等,您可以通过标准方式 (gulp e2e --variable=1
) 传递命令行,然后设置 process.env.VARIABLE
在构建工具任务中。
我有一堆Webdriver.io/Selenium tests, and I'm using the jasmine test framework to write my tests in, so I have a wdio.conf.js file that I have configured to use jasmine, as per these instructions
问题是我正在测试一个基于 ad/marketing 的 Web 应用程序,该应用程序高度 dynamic/configurable,并且需要我传递大量配置信息,以便测试知道要测试什么.例如在命令行我想 运行 类似的东西:
> wdio --campaignId=123 --productId=456
我可以修改 wdio.conf.js 文件中的 'onPrepare' function/event 来获取这些参数,如下所示:
exports.config = {
....other options (snip)...
framework: 'jasmine',
jasmineNodeOpts: {
defaultTimeoutInterval: 9999999,
expectationResultHandler: function (passed, assertion) { }
},
onPrepare: function (config) {
var campaignId = parseInt(process.argv[2]
.replace('--campaignId=', ''));
var productId = parseInt(process.argv[3]
.replace('--productId=', ''));
config.params = {
campaignId: campaignId,
productId: productId
};
}
};
...但我不知道如何将这些传递给我的茉莉花测试。我尝试从 process.argv 读取数据,但缺少 campaignId 和 productId 参数,例如
describe('Campaign Tests', function () {
beforeEach(function(done) {
browser
.session(function(err, client) {
var campaignId = parseInt((process.argv[2] || '')
.replace('--campaignId=', ''));
var productId = parseInt((process.argv[3] || '')
.replace('--productId=', ''));
// campaignId and productId are both NaN/undefined
});
});
it('should test something...snip...
如何将自定义 params/arguments 传递给我的 jasmine 测试?我可以将它们写入 onPrepare 中的文件,然后在 jasmine 测试中读取该文件,这似乎有点 hacky。
我建议使用环境变量来解决此问题。
因此,例如,您可以 运行 您的测试,例如 VARIABLE=1 wdio wdio.config.js
,然后在您的测试中,您可以使用 process.env.VARIABLE
如果您正在使用一些构建工具,例如 gulp、g运行t 等,您可以通过标准方式 (gulp e2e --variable=1
) 传递命令行,然后设置 process.env.VARIABLE
在构建工具任务中。