You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于Zephyr与Eclipse项目集成及Karate框架自动化测试结果同步至Zephyr Board的技术咨询

Karate框架API自动化测试结果同步至Zephyr Board的实现方案

当然可以实现Karate测试结果自动同步到Zephyr Board,完全不用局限在Jira内部运行脚本——批量测试用例的场景也能轻松搞定,下面给你几个实用的方案:

方案一:直接调用Zephyr Scale REST API

Karate本身就是做HTTP请求的好手,我们可以利用它的钩子功能,在每个测试用例执行完成后,主动调用Zephyr的API更新状态:

  1. 关联测试用例:先给Karate的Scenario加上明确的标识,比如把Zephyr的测试用例Key(比如TC-123)放在Scenario名称里,或者用Karate的标签@TC-123来关联。
  2. 编写全局钩子:在karate-config.js或者单独的钩子文件里,添加After钩子来捕获测试结果:
After(function(scenario) {
    // 从Scenario标签中提取Zephyr测试用例Key
    const testCaseKey = scenario.getTags().find(tag => tag.startsWith('@TC-')).replace('@', '');
    const status = scenario.isPassed() ? "PASS" : "FAIL";
    
    // 调用封装好的Zephyr更新接口
    karate.call('classpath:zephyr/update-status.feature', { 
        testCaseKey: testCaseKey, 
        executionStatus: status 
    });
});
  1. 封装Zephyr API调用:写一个单独的feature文件update-status.feature来处理HTTP请求,带上Zephyr的认证信息(API密钥或Jira token):
Feature: Update Zephyr Test Case Status

  Scenario: Update status for a test case
    Given url 'https://api.zephyrscale.smartbear.com/v2/testcases/' + testCaseKey + '/executions'
    And header Authorization = 'Bearer ' + karate.properties['zephyr.api.token']
    And header Content-Type = 'application/json'
    And request { statusName: '#(executionStatus)' }
    When method post
    Then status 200

这样每次Karate测试跑完,就会自动把结果同步到对应的Zephyr测试用例上。

方案二:通过CI/CD工具批量同步(推荐批量场景)

如果你们用Jenkins、GitHub Actions这类CI工具跑Karate测试,这个方案更高效:

  1. 生成标准JUnit报告:在Karate配置里开启JUnit报告输出,这样测试结果会生成通用的XML格式:
karate.configure('report', { 
    junit: true, 
    outputDir: 'target/test-reports',
    reportName: 'karate-api-tests'
});
  1. 集成Zephyr Scale CI插件:在CI工具里安装Zephyr Scale的官方插件(比如Jenkins的Zephyr Scale插件),配置好Jira/Zephyr的认证信息。
  2. 批量导入报告:在CI任务中,跑完Karate测试后,添加一个步骤让插件读取JUnit报告,自动匹配Zephyr里的测试用例(可以通过测试用例名称、标签或者自定义字段关联),批量更新状态。
    这种方式不用给每个测试用例写钩子,适合大量测试用例的场景,维护成本更低。

方案三:扩展Karate报告逻辑

如果你需要更定制化的同步逻辑,可以扩展Karate的Reporter类,在生成测试报告的同时,把结果推送到Zephyr。不过这个方案需要写Java代码,适合有一定Karate底层经验的团队。

针对你提到的Zephyr Scale App限制的说明

你之前遇到的“只能在Jira里运行脚本”只是Zephyr的一种内置执行方式,并不是唯一的同步路径。上面的方案都是在本地或CI环境运行Karate测试,再把结果同步到Zephyr,完全支持批量测试用例的同步需求。

注意事项

  • 测试用例关联准确性:一定要确保Karate测试和Zephyr测试用例的关联标识(Key、名称、标签)一致,避免同步错对象。
  • 认证权限:不管用哪种方式,都要确保同步工具拥有Zephyr测试用例的编辑权限,API密钥或token要妥善保管。
  • 错误处理:可以在同步逻辑里加日志记录和重试机制,避免因为网络波动导致同步失败。

备注:内容来源于stack exchange,提问作者Dinesh

火山引擎 最新活动