javascript - 从外部确定哪些测试用例失败 - 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++;
});
但是,这将是一种非常严格的方法。我想要一种更通用的方法,它可以适用于各种测试模块(不仅仅是 mocha)。
帮助将不胜感激!
解决方案
state
执行到代码中后,您可以获得for each 测试。这样你就可以知道测试是否通过了。
您需要的代码非常简单。像这样的东西:
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
现在你可以玩这个了。您可以使用该变量来完成您的工作,甚至可以创建一个文件或任何您想要存储信息的东西。
推荐阅读
- android - Android/Kotlin,如何减少此代码的重复部分
- android - Android Studio 4.0 模拟器黑屏
- javascript - 如何确保 Bootstrap 模态仅将高度从向下更改为向上?
- c++ - 如何在类中安全地访问 const 共享数组
- aerospike - 是否可以在 Aerospike 中使用主键和辅助键来获取记录?
- python - 关于如何访问函数返回的简单问题
- microsoft-graph-api - MS Graph - 如何在我的 DC 下列出来自特定 OU 的所有用户?
- python - 深度学习:当学习率太高时
- java - apk 文件调试 - React Native
- python - 金字塔中的随机无交易