我希望让我的自动化测试更灵活一些。我有一个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时,它似乎并没有等待用户从inquerior输入来运行测试,我得到的输出是这样的:
$ 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要这样做,是否可以使用inquirer这样的库来运行我现有的mocha脚本。
发布于 2020-10-20 23:28:06
所以我找到了我的问题的解决方案,以防有人在这里跌倒并感到疑惑。
我在package.json文件中将CLI部分和Mocha部分分离到不同的脚本中。这样,我就可以使用Nodes子进程库来运行mocha部分,并通过process.argv对象传递来自CLI部分的信息。
因此,CLI部分将询问我要运行什么测试、什么环境和什么用户。我创建了一个命令来放置子进程exec函数(我认为还有其他可用的函数,但并不重要)。当mocha测试运行时,我解析argv并将它们传递给函数,以便测试可以基于它运行。
https://stackoverflow.com/questions/64347296
复制相似问题