2015-10-15 59 views
1

我有一堆Webdriver.io/Selenium測試,並且我使用茉莉花測試框架編寫我的測試,所以我有一個wdio.conf.js文件,我已配置使用茉莉花,按these instructionsWebdriverIO - 如何將參數發送到Jasmine測試?

問題是我正在測試一個高度動態/可配置的基於廣告/營銷的Web應用程序,並且要求我傳遞一些配置信息,以便測試知道要測試什麼。例如在命令行中,我想運行類似:

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

我可以修改wdio.conf.js文件中的「onPrepare」功能/事件拿起這些paramters像這樣:

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 /參數傳遞給我的茉莉花測試?我可以將它們寫入到onPrepare中的文件中,然後在茉莉花測試中讀取該文件,這看起來有點冒險。

回答

4

我推薦使用環境變量來處理這種行爲。

因此,例如,你可以運行你的測試,如VARIABLE=1 wdio wdio.config.js,然後在您的測試,你可以很容易地process.env.VARIABLE

如果您使用的是像一飲而盡,哼哼,等一些構建工具比你可以通過命令行訪問標準方式(gulp e2e --variable=1),然後在構建工具任務中設置process.env.VARIABLE

相關問題