Jestjs JEST更改来自测试用例的预格式化输出
我有一个应用程序,它从命令行运行Jest测试套件,然后获取JSON输出,解析它,然后根据输出文件填充数据库中的表。应用程序运行shell命令:Jestjs JEST更改来自测试用例的预格式化输出,jestjs,Jestjs,我有一个应用程序,它从命令行运行Jest测试套件,然后获取JSON输出,解析它,然后根据输出文件填充数据库中的表。应用程序运行shell命令: npm run all 在package.json文件中,all脚本如下所示: "scripts": { "all": "../node_modules/.bin/jest --json --outputFile=testResults.json",` ...... }
npm run all
在package.json文件中,all
脚本如下所示:
"scripts": {
"all": "../node_modules/.bin/jest --json --outputFile=testResults.json",`
......
}
所以我得到了testResults.json
文件,并且我能够解析它-到目前为止还不错
但是在测试用例运行期间,我想向输出中添加一些额外的数据。类似于详细信息-问题在哪里,如何解决,一些疑难解答信息等。例如,在以下字段中添加一个字段:
require('testResults.json').testResults[x].assertionResults[y].details
您可以看到,detail属性不是json输出文件格式的一部分。但是我可以从测试用例中创建它吗(伪示例):
test('行业代码应与ind\u full\u代码匹配',异步()=>{
结果=等待stageDb.query(查询);
//在这里,我想将这些自定义信息添加到一些可用的全局属性中?
reporter.thisTestCase.assertionResults.details=“以下是修复此问题的方法…””//我发现Jest中需要类似的功能。测试框架很少支持向测试中添加文档的功能
但是,我找到了一种方法,可以通过即将成为默认运行程序来实现这一点:。然后我创建了。自定义Jest Circus环境提供了更多测试事件/生命周期,并提供了对正在运行的实际测试代码的访问
// Example of a custom Jest Circus environment
export default class MyCustomNodeEnvironment extends NodeEnvironment {
handleTestEvent(event: Circus.Event, state: Circus.State) {
if(event.name === 'test_fn_start') {
console.log(event.test.toString())
// will log the actual test code.
}
}
}
//jest.config.js
{
“TestenEnvironment”:“/my custom environment.js”,
“测试跑步者”:“开玩笑的马戏团/跑步者”
}
然后,我使用regex模式在测试函数中查找注释,并将它们添加到Allure报告()
如果您想创建自己的Jest环境并自己实现它,我已经做了一个或您更喜欢一个
如果你喜欢诱惑报告的样子,你应该检查一下我的开源项目
// Example of a custom Jest Circus environment
export default class MyCustomNodeEnvironment extends NodeEnvironment {
handleTestEvent(event: Circus.Event, state: Circus.State) {
if(event.name === 'test_fn_start') {
console.log(event.test.toString())
// will log the actual test code.
}
}
}
// jest.config.js
{
"testEnvironment": "<rootDir>/my-custom-environment.js",
"testRunner": "jest-circus/runner"
}