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
相关产品推荐
相关产品推荐

