如何配置Jest运行测试时不报告被跳过的测试用例?
Jest隐藏跳过测试报告及用例级打标解决方案
隐藏被跳过测试的报告输出
你可以通过配置Jest默认报告器的参数实现完全隐藏跳过测试的输出,有两种生效方式:
- 临时在命令行参数中配置,直接修改你的
package.json脚本:
"smoketest": "jest -t \"^(?=.*@HappyPath).*\" src/tests/ --reporters=\"default\" --reporter-options=\"hideSkippedTests=true\""
- 在Jest配置文件中全局生效(以
jest.config.js为例):
module.exports = { // 保留你原有其他配置 reporters: [ ["default", { hideSkippedTests: true }] ] }
用例级别的测试打标方案
不需要依赖文件级分组的第三方工具,两种方案可实现用例粒度的分组:
- 保留现有
t参数正则匹配方案:配合上面的hideSkippedTests配置即可达到你要的效果,测试名称带@HappyPath的用例会正常运行,其余用例不会出现在报告中。 - 更精准的自定义标签方案:避免正则误匹配,且不匹配的用例不会被Jest识别为跳过项,完全不进入报告统计:
- 首先封装自定义测试函数,可放在全局测试前置文件或者每个测试文件顶部:
const testWithTags = (tags, testName, testFn, timeout) => { // 冒烟测试模式下仅运行带@HappyPath标签的用例 if (process.env.SMOKE_TEST && !tags.includes('@HappyPath')) return test(testName, testFn, timeout) }
- 测试用例写法示例:
// 冒烟测试用例 testWithTags(['@HappyPath'], '正常登录流程验证', () => { expect(login('validUser', 'validPwd')).toBe(true) }) // 异常场景用例,冒烟测试时不会被加载 testWithTags(['@Exception'], '密码错误场景验证', () => { expect(login('validUser', 'wrongPwd')).toBe(false) })
- 对应修改
package.json的smoketest脚本(Windows环境需提前安装cross-env保证环境变量跨平台生效):
"smoketest": "cross-env SMOKE_TEST=true jest src/tests/"
内容的提问来源于stack exchange,提问作者Toma
相关产品推荐
相关产品推荐

