WebdriverIO - 如何向Jasmine测试发送参数?

时间:2015-10-15 16:09:53

标签: selenium-webdriver jasmine webdriver-io

我有一堆Webdriver.io / Selenium测试,并且我使用jasmine测试框架来编写我的测试,所以我有一个wdio.conf.js文件,我已配置使用茉莉花,根据these instructions

问题在于,我正在测试基于广告/营销的高度动态/可配置的Web应用程序,并要求我传递大量配置信息,以便测试知道要测试的内容。例如在命令行,我想运行类似:

> wdio --campaignId=123 --productId=456

我可以修改' onPrepare' wdio.conf.js文件中的函数/事件来获取这些参数:

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 args,例如。

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...

如何将自定义参数/参数传递给我的茉莉花测试?我可以将它们写入onPrepare中的文件,然后在茉莉花测试中读取该文件,这看起来有点笨拙。

1 个答案:

答案 0 :(得分:6)

我建议使用环境变量来解决此问题。

例如,您可以像VARIABLE=1 wdio wdio.config.js一样运行测试,然后在测试中,您可以使用process.env.VARIABLE

轻松访问它

如果您正在使用gulp,grunt等构建工具,那么您可以使用标准方式(gulp e2e --variable=1)传递命令行,然后在构建工具任务中设置process.env.VARIABLE