Jestjs JEST更改来自测试用例的预格式化输出

Jestjs JEST更改来自测试用例的预格式化输出,jestjs,Jestjs,我有一个应用程序,它从命令行运行Jest测试套件,然后获取JSON输出,解析它,然后根据输出文件填充数据库中的表。应用程序运行shell命令: npm run all 在package.json文件中,all脚本如下所示: "scripts": { "all": "../node_modules/.bin/jest --json --outputFile=testResults.json",` ...... }

我有一个应用程序,它从命令行运行Jest测试套件,然后获取JSON输出,解析它,然后根据输出文件填充数据库中的表。应用程序运行shell命令:

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"
}