外部确定哪些测试用例失败 - Javascript



我正在处理一个问题,我需要检测当任何javascript/node.js应用程序的测试套件运行时,哪些测试用例失败。我需要以编程方式确定这一点。

摩卡测试套件输出结果

考虑上面的测试输出示例,对于此示例,我想编写一个外部 javascript 脚本,它可以告诉我哪个特定的测试用例失败了。

目前,我认为唯一的解决方案是;在javascript子进程中执行npm test并从stdout流中读取其输出,解析输出并提取必要的信息,如下所示。

const { spawn } = require('child_process');
const chalk = require('chalk');
const child = spawn('npm.cmd',['test']);
line = 0
child.stdout.on('data', (data) => {
console.log(`${chalk.bgBlue('line = ' + line)} , data = ${data}`);
line++;
});

但是,这将是一个非常严格的方法。我想要一种更通用的方法,它可以适用于各种测试模块(不仅仅是摩卡(。

帮助将不胜感激!

您可以在执行代码后获取每个测试的state。因此,您可以知道测试是否已通过。

您需要的代码非常简单。像这样:

afterEach(function () {
const state = this.currentTest.state;
if (state !== "passed") {
//Do whatever you want with this value
}
});

例如,如果要将哪个测试失败的代码存储到代码中,则可以编写以下内容:

var testFailed = []
describe('test', function () {
afterEach(function () {
const state = this.currentTest.state;
if (state !== "passed") {
testFailed.push(this.currentTest.title)
}
});
after(function(){
console.log(testFailed)
})
it('test1', () => {
assert.equal(1, 1)
});
it('test2', () => {
assert.equal(1, 2)
});
})

输出将是:

test
√ test1       
1) test2      
[ 'test2' ]       

1 passing (15ms)
1 failing

现在你可以玩这个了。您可以使用该变量来完成您的工作,甚至可以创建一个文件或任何您想要存储信息的内容。

相关内容

最新更新