k6chaijs能否搭配async函数?k6浏览器测试输出顺序异常求助
k6 Browser模块结合k6chaijs时输出顺序异常问题
问题现象
在k6 Browser模块中使用k6chaijs时,describe的分组文本会出现在断言失败信息之后,输出顺序不符合预期。
示例代码:
export default () => { describe('New page verifier', async () => { const page = await browser.newPage(); try { expect(page, "page").to.be.null; } finally { await page.close(); } }) }
执行输出:
✗ expected page to be null ↳ 0% — ✓ 0 / ✗ 1 █ New page verifier ✗ checks...............: 0.00% ✓ 0 ✗ 1 data_received........: 0 B 0 B/s data_sent............: 0 B 0 B/s
原因分析
k6的Mocha风格接口中,describe仅作为测试分组容器,本身不负责执行测试逻辑。当直接在describe的异步回调中编写测试代码时,回调的执行时机导致断言输出先于分组标题的打印,从而出现顺序颠倒的情况。
解决方案
将测试逻辑包裹在test(或it)块中,describe仅用于分组组织,这样k6会先输出分组标题,再执行测试用例并输出断言结果:
export default () => { describe('New page verifier', () => { test('Verify page state', async () => { const page = await browser.newPage(); try { expect(page, "page").to.be.null; } finally { await page.close(); } }); }); }
调整后,输出顺序会变为符合预期的形式:
█ New page verifier ✗ Verify page state ↳ 0% — ✓ 0 / ✗ 1 ✗ expected page to be null ✗ checks...............: 0.00% ✓ 0 ✗ 1 data_received........: 0 B 0 B/s data_sent............: 0 B 0 B/s
内容的提问来源于stack exchange,提问作者user2860204
相关产品推荐
相关产品推荐

