You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Detox中获取每条测试用例的执行结果以对接TMS

实现方案

你需要通过自定义Detox的ArtifactPlugin来采集每条用例的执行结果,具体操作步骤如下:

步骤1:编写自定义ArtifactPlugin

新建TmsResultPlugin.js文件,代码如下:

const { ArtifactPlugin } = require('detox');

class TmsResultPlugin extends ArtifactPlugin {
  // 全局存储所有用例执行结果
  #testResults = [];

  // 每条用例执行完成后自动触发
  async onTestDone(testSummary) {
    await super.onTestDone(testSummary);
    // 按你需要的字段收集结果,testID可以和你TMS里的用例ID对应上
    this.#testResults.push({
      testID: testSummary.testId || testSummary.fullName, // 按需取你绑定的TMS用例ID字段
      result: testSummary.status, // 执行结果:'passed'/'failed'/'skipped'
      duration: testSummary.duration,
      error: testSummary.error?.message || ''
    });
  }

  // 所有测试执行完成后自动触发
  async onEnd() {
    // 这里调用你的TMS回传接口,把收集到的#testResults批量回传到之前创建的测试执行单即可
    console.log('所有用例执行结果:', this.#testResults);
    // 调用你已有的TMS回传逻辑
    // await yourTmsApi.uploadTestResults(this.#testResults);
  }
}

module.exports = TmsResultPlugin;

步骤2:配置Detox启用自定义插件

修改你的Detox配置文件(通常是.detoxrc.js或者package.json里的detox配置段),添加插件配置:

module.exports = {
  // 其他原有配置...
  artifacts: {
    plugins: {
      // 自定义插件配置
      tmsResult: {
        enabled: true,
        path: './path/to/TmsResultPlugin.js', // 替换为你刚才写的插件文件的实际路径
        // 可以自定义传参,比如TMS的执行单ID之类的
        executionId: '你之前创建的TMS测试执行单ID'
      }
    }
  }
}

步骤3:绑定测试用例和TMS用例ID(可选,按需操作)

如果你需要把测试用例和TMS里的用例ID一一对应,可以在写用例的时候把TMS用例ID绑定到testId上:

it('TMS-1234 登录功能正常校验', async () => {
  // 你的测试逻辑
});
// 或者单独绑定testId
it('登录功能正常校验', { testId: 'TMS-1234' }, async () => {
  // 你的测试逻辑
});

注意事项

  • testSummary支持的字段包含执行状态、耗时、错误信息、用例全名、testId等所有你需要的字段
  • 回传TMS的逻辑可以全部放到onEnd钩子里面批量提交,也可以在onTestDone里单条提交,根据你的TMS接口要求调整即可
  • 不需要在测试文件里写单独的afterEach逻辑,插件会自动采集所有用例的执行结果

内容的提问来源于stack exchange,提问作者suverev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:36:02