Jest中是否可以导入测试用例到其他文件以构建冒烟测试套件?
Jest 跨文件复用测试用例实现方案
Jest 完全支持跨文件复用单个测试用例,你可以通过抽离可复用测试逻辑为导出函数的方式,快速搭建自定义冒烟测试套件,具体实现步骤如下:
步骤1:重构原有测试文件,导出待复用测试用例
修改原有测试文件,将需要复用的it测试逻辑抽离为独立函数并导出,原有测试运行逻辑不受影响:
文件1(test1.test.js)
import { csv, doSomething } from './common' // 抽离Test 1.1逻辑,对外导出 export const test1_1 = (data) => { it('Test 1.1', async function () { const testObject = await doSomething(data); expect(Array.isArray(testObject)).toBe(true); }); } // 原有测试逻辑保留,支持独立运行 describe('Test 1', function () { let data; beforeAll(async () => { data = await csv().fromFile('./src/data/test.csv'); }); test1_1(data); });
文件2(test2.test.js)
import { csv, doSomething } from './common' // 抽离Test 2.1逻辑,对外导出 export const test2_1 = (data) => { it('Test 2.1', async function () { const testObject = await doSomething(data); expect(Array.isArray(testObject)).toBe(true); }); } // 原有测试逻辑保留,支持独立运行 describe('Test 2', function () { let data; beforeAll(async () => { data = await csv().fromFile('./src/data/test.csv'); }); test2_1(data); });
步骤2:新建冒烟测试套件文件
创建单独的冒烟测试文件,导入之前导出的测试用例函数,统一组装运行:
冒烟测试文件(smoke.test.js)
import { csv } from './common' import { test1_1 } from './test1.test' import { test2_1 } from './test2.test' describe('冒烟测试套件', function () { let data; // 公共初始化逻辑仅执行一次,提升测试运行效率 beforeAll(async () => { data = await csv().fromFile('./src/data/test.csv'); }); // 直接复用两个测试用例 test1_1(data); test2_1(data); });
注意事项
- 抽离测试用例时不需要导出外层
describe,仅导出测试逻辑本身即可,避免结构嵌套冗余 - 测试用例如果有专属的
beforeEach/afterEach等生命周期,可以一起封装到导出的函数内部 - 运行时执行
jest smoke.test.js即可仅运行冒烟测试套件,原有测试文件的独立运行逻辑不受任何影响 - 可以根据需求自由组合不同文件导出的测试用例,搭建不同场景的测试套件
内容的提问来源于stack exchange,提问作者Jhon Kolecha
相关产品推荐
相关产品推荐

