如何将摩卡咖啡与inquirer.js相结合



我希望使自动化测试更加灵活。我有一个QA团队,他们不太懂javascript,可能不得不为没有或几乎没有编程技能的用户设计测试。

我使用mocha测试框架创建了一些脚本,spectron.js(用于使用electrion.js构建的应用程序(测试了产品的一些功能。我不想每次运行脚本时都运行每个测试。我的临时解决方案是将测试捆绑到一个函数中;套房";。像这样-

function DiagnosticSuite(location, workstation, workflowName){
CreateWorkflow(location, workflowName); 
SetWorkFlowToStation(location, workstation, workflowName);
DiagnosticTestFlow();
return;
}
function PowerflowSuite(imei, location, workstation, workflowName){
SetWorkFlowToStation(location, workstation, workflowName);
powerOffFlow(imei);
return;
}

我想使用Inquirer并使用基于输入的条件来运行上面的一个测试。像这样-

inquirer.prompt([
{
type: 'list',
name: 'Which workflow do you want to run?',
choices: ['Power Off', 'Diagnostic']
}
]).then((answers) => { 
if(answers == 'Power Off'){
PowerflowSuite(imei, location, workstation, workflowName);
}   
})

当我测试Mocha时,它似乎没有等待来自询问者的用户输入来运行测试,我得到了这样的输出——

$ npm test
> metistests@1.0.0 test C:UsersDPerez1Desktopmetis-automation
> mocha
? Which workflow do you want to run?: (Use arrow keys)
> Power Off
Diagnostic
0 passing (0ms)

看起来它在运行,没有看到任何测试,然后完成了,当我选择答案时,程序就关闭了。

我想知道Mocha为什么这么做,以及是否可以用像inquirer这样的库来运行我现有的Mocha脚本。

所以我找到了一个解决问题的方法,以防有人在这里绊倒并感到疑惑。

我在package.json文件中将CLI部分和Mocha部分分成不同的脚本。这样,我就可以使用nodes子进程库来运行mocha部分,并通过process.argv object从CLI部分传递信息。

因此,CLI部分将询问我要运行什么测试、什么env和什么用户。我创建了一个命令来放入子进程exec函数(我认为还有其他函数可以使用,但并不重要。(当mocha测试运行时,我解析argv并将其传递到函数中,以便测试可以基于此运行。

最新更新