Testing 基于Nightwatch中的参数生成动态测试

Testing 基于Nightwatch中的参数生成动态测试,testing,automated-tests,nightwatch.js,e2e-testing,Testing,Automated Tests,Nightwatch.js,E2e Testing,我正在使用NightwatchJS在我们的报告网站上自动化测试 这是我的实际代码: module.exports = { '@tags': ['Report 1','base','full'], 'Report 1' : function (browser) { checkAnalisi(browser, 'report1', 1, 2015, '767.507') } }; function checkAnalisi(browser, nomeAnalisi, sched

我正在使用NightwatchJS在我们的报告网站上自动化测试

这是我的实际代码:

module.exports = {
  '@tags': ['Report 1','base','full'],
  'Report 1' : function (browser) {
    checkAnalisi(browser, 'report1', 1, 2015, '767.507')
  }
};

function checkAnalisi(browser, nomeAnalisi, scheda, year, risultatoAtteso){
  return browser
      .url('https://example.com/Wizard?analisi=' + nomeAnalisi)
      .waitForElementVisible('body', 5000)
      .selectScheda(scheda-1) //Seleziona la scheda (0-based)
      .selectPromptValue('Year', year)
      .selectRappresentazione('Table')
      .waitForElementVisible('table', 5000, true)
      .assert.containsText('table tr:last-child td:last-child', risultatoAtteso)
      .end();
}
我使用了一些帮助器命令来选择页面中的不同内容:

。选择scheda(scheda-1)
.选择PromptValue('年',年)
.selectRappresentazione('Table')

selectPromptValue
需要提示名称和在页面中设置的值

目前,该函数仅设置年份参数,但在我的报告中,我也有不同的参数

我要做的是将一个对象传递给
checkAnalisi
函数以动态生成测试。例如,如果我想设置不同的提示值,我想传递类似于
[[['Year',2015],'other prompt','other value']]
的信息,
checkAnalisi
函数应该添加2个
。选择带有相应值的PromptValue
步骤


是否可以在我的函数中循环输入数组以添加更多步骤?

实际上,我可以直接在我的
selectPromptValue
自定义命令中轻松解决这个问题

我只是像这样将新参数添加到checkAnalisi函数中(promptValues是新参数):

然后我修改了selectPromptValue.js自定义命令,如下所示:

exports.command = function(v) {
    for(var i=0; i<v.length; i++){
        this.execute('$("#"+$("label:visible:contains(\'' + v[i][0] + '\')").attr("for")).val("' + v[i][1] + '")');
    }
    return this;
};
exports.command=函数(v){
对于(var i=0;i
exports.command = function(v) {
    for(var i=0; i<v.length; i++){
        this.execute('$("#"+$("label:visible:contains(\'' + v[i][0] + '\')").attr("for")).val("' + v[i][1] + '")');
    }
    return this;
};