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

XRAY与WebdriverIO集成问题:仅导入最后一个测试套件结果

多测试套件下WDIO生成独立JUnit报告并导入XRAY的解决方案

当前集成背景

已完成XRAY与WebdriverIO、Mocha的集成,核心流程基于JUnit XML报告导入XRAY的方式。

现有配置与命令

WDIO的JUnit报告器配置

reporters: ['spec',
        ['junit', {
            outputDir: './',
            outputFileFormat: function(options) { 
                return `results.xml`
            }
        }],

测试套件运行命令

  • 运行单个套件:npm run --suite mysuite1
  • 运行多个套件:npm run --suite mysuite1 --suite mysuite2

XRAY导入Curl命令

curl -H "Content-Type: multipart/form-data" -u "UserName":"PASSWORD" -F "file=@results.xml" "${URL}/rest/raven/1.0/import/execution/junit?projectKey=${projectKey}&testPlanKey=${testPlanKey}"

遇到的问题

执行单个套件时,results.xml可正常生成并导入XRAY;但执行多个套件时,results.xml会被最后一个套件的结果覆盖,导致XRAY仅能导入最后一个套件的测试结果。

需求

为每个测试套件生成独立的结果文件(例如result_mysuite1.xml),并针对每个文件调用XRAY导入API,传入对应套件的项目及测试计划信息。

解决方案

1. 动态生成套件专属报告文件名

修改WDIO的JUnit报告器配置,利用outputFileFormat函数的options参数获取当前套件名称,动态生成对应报告文件名:

reporters: ['spec',
        ['junit', {
            outputDir: './',
            outputFileFormat: function(options) { 
                // 从WDIO内置参数中提取套件名称
                const suiteName = options.cid ? options.cid.split('-')[1] : 'default';
                return `result_${suiteName}.xml`;
            }
        }],

如果上述方式无法直接获取套件名称,可通过自定义环境变量传递:

  • 修改运行命令,为每个套件指定环境变量:
    npm run --suite mysuite1 SUITE_NAME=mysuite1
    npm run --suite mysuite2 SUITE_NAME=mysuite2
    
  • 在WDIO配置中读取环境变量:
    outputFileFormat: function() { 
        return `result_${process.env.SUITE_NAME || 'default'}.xml`;
    }
    

2. 批量导入脚本简化操作

编写Shell脚本(例如import-to-xray.sh),遍历所有生成的result_*.xml文件,自动匹配对应项目及测试计划并调用XRAY导入API:

#!/bin/bash
# 配置基础信息
USERNAME="your_username"
PASSWORD="your_password"
XRAY_URL="your_xray_url"

# 遍历所有结果文件
for file in result_*.xml; do
    # 从文件名提取套件名称
    suite_name=$(echo $file | sed 's/result_\(.*\)\.xml/\1/')
    # 根据套件名称匹配对应的项目和测试计划(需根据实际情况调整映射)
    case $suite_name in
        mysuite1)
            PROJECT_KEY="PROJ1"
            TEST_PLAN_KEY="PROJ1-100"
            ;;
        mysuite2)
            PROJECT_KEY="PROJ2"
            TEST_PLAN_KEY="PROJ2-200"
            ;;
        *)
            echo "Unknown suite: $suite_name, skipping..."
            continue
            ;;
    esac
    # 调用XRAY导入API
    curl -H "Content-Type: multipart/form-data" -u "$USERNAME:$PASSWORD" -F "file=@$file" "$XRAY_URL/rest/raven/1.0/import/execution/junit?projectKey=$PROJECT_KEY&testPlanKey=$TEST_PLAN_KEY"
    echo "Imported $file to XRAY with project $PROJECT_KEY and test plan $TEST_PLAN_KEY"
done

给脚本添加执行权限:chmod +x import-to-xray.sh,运行即可批量导入所有套件结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:36:29