javascript - 如何将 mocha 与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:\Users\DPerez1\Desktop\metis-automation
> mocha
? Which workflow do you want to run?: (Use arrow keys)
> Power Off
Diagnostic
0 passing (0ms)
似乎它运行并且没有看到任何测试和完成,当我选择答案时,程序就关闭了。
我想知道为什么 Mocha 会这样做,以及是否可以使用像查询器这样的库来运行我现有的 mocha 脚本。
解决方案
所以我找到了解决问题的方法,以防有人在这里绊倒并想知道。
我在 package.json 文件中将 CLI 部分和 Mocha 部分分成不同的脚本。这样我就可以使用节点子进程库来运行 mocha 部分并通过 process.argv 对象传递来自 CLI 部分的信息。
所以 CLI 部分会问我要运行什么测试、什么环境以及什么用户。我创建了一个命令来放入子进程 exec 函数(我认为还有其他可以使用但不重要。)当 mocha 测试运行时,我解析 argvs 并将它们传递给函数,以便测试可以基于它运行。
推荐阅读
- docker - 如何增加卷 var/lib/docker/overlay2 的大小或安装到 Debian VM 中的新虚拟磁盘
- firebase - FutureBuilder 小部件仅使用 Firebase RealtimeDatabase 返回“DataSnapshot”实例
- angular - 制作一个角度全局解析器以使数据在每条路线中都可用
- email - 按术语 oa 产品属性自定义电子邮件
- r - R中的配对t检验给了我这个错误:没有足够的'x'观察
- java - 如何在 lambda 中使用 return 关键字
- python - .replace() 函数中的正则表达式参数是什么意思
- javascript - 如何通过导入在 vue.js 中加载异步组件?
- python - 具有非 ASCII 字符的正则表达式模式
- android - Mapbox 视图在我的片段中是空白的,并且没有错误