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

关于Karate汇总报告优化调整的技术问询

Karate测试报告格式定制咨询

我们在处理测试报告时发现,Karate的汇总报告包含的细节远不止摘要内容。在自行开发相关处理方法前,想咨询是否可以将现有各类报告中的信息整合为以下指定格式的报告(所需信息均来自当前生成的各类报告)。

以下是示例格式:

功能文件名: Sample-GET-PUT.feature
功能描述: 示例服务域测试
功能级别标签: [@domain, @regression]
    场景数量: 5

    场景名称: 切换示例/网络ID/热点状态
    场景标签: [@regression, @smoke]
    场景步骤数: 29
        失败步骤数: 0.0
        通过步骤数: 29.0
        跳过步骤数: 0.0
        场景开始时间: 1689965533039
        场景结束时间: 1689965544470
        场景持续时长: 11431
已排除背景步骤 - 8步
Given 设置路径为 'v1/network' ................................................... 通过
When 调用GET方法 ........................................................... 通过
Then 状态码为200 ........................................................... 通过
* 定义scpNetworkId = 获取[0] $.networks[?(@.isScp  == true)].networkId ..... 通过
* 打印 'scpNetworkId =', scpNetworkId .................................... 通过
* 如果 (!scpNetworkId || scpNetworkId.length==0) { karate.logger.debug('账号下未找到SCP网络'); karate.abort(); } . 通过
Given 设置路径为 'v1/network/' + scpNetworkId + '/hotspot' ...................... 通过
When 调用GET方法 ........................................................... 通过
Then 状态码为200 ........................................................... 通过
* 定义mode = $.mode ....................................................... 通过
* 如果 (mode == 'ENABLED') { karate.logger.debug('热点状态为ENABLED'); karate.abort(); } . 通过
Given 设置路径为 'v1/network/' + scpNetworkId + '/hotspot' ...................... 通过
And 请求体为 {mode: "ENABLE"} .............................................. 通过
When 调用PUT方法 ........................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言 $.mode == 'ENABLED' ............................................... 通过
Given 设置路径为 'v1/network/' + scpNetworkId + '/hotspot' ...................... 通过
When 调用GET方法 ........................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言 $.mode == 'ENABLED' ............................................... 通过
Given 设置路径为 'v1/network/' + scpNetworkId + '/hotspot' ...................... 通过
And 请求体为 {mode: "DISABLE"} ............................................. 通过
When 调用PUT方法 ........................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言 $.mode == 'DISABLED' .............................................. 通过
Given 设置路径为 'v1/network/' + scpNetworkId + '/hotspot' ...................... 通过
When 调用GET方法 ........................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言 $.mode == 'DISABLED' .............................................. 通过

    场景名称: 示例/网络ID/热点的负面测试
    场景标签: [@regression, @domain]
    场景步骤数: 21
        失败步骤数: 1.0
        通过步骤数: 20.0
        跳过步骤数: 0.0
        场景开始时间: 1689965533056
        场景结束时间: 1689965542501
        场景持续时长: 9445
已排除背景步骤 - 8步
Given 定义query = 读取('../../../payloads/getNetworkIdforDisabledSecurity.graphql') . 通过
And 定义variables = { } ................................................... 通过
And 请求体为 { query: '#(query)' , variables: '#(variables)'} .............. 通过
When 调用Post方法 .......................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言 response.errors == '#notpresent' .................................. 通过
* 定义firstNetworkId = 获取[0] $.data.allCustomerPremisesNetworks[?(@.isScp == true)].id . 通过
* 如果 (!firstNetworkId || firstNetworkId.length==0) { karate.logger.debug('非SCP网络'); karate.abort(); } . 通过
* 定义securityStatusInput = true .......................................... 通过
Given 定义query = 读取('../../../payloads/updateNetworkSecurityStatus.graphql') . 通过
And 定义variables = { var_networkSecurityToggleInput: { networkId : '#(firstNetworkId)', enabled : '#(securityStatusInput)' } } . 通过
And 请求体为 { query: '#(query)' , variables: '#(variables)'} .............. 通过
When 调用POST方法 .......................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言每个 $.data.updateNetworkSecurity[*].enabled == securityStatusInput . 通过
Given 定义query = 读取('../../../payloads/getNetworkIdforDisabledSecurity.graphql') . 通过
And 定义variables = { forceCacheSkip: false } ............................. 通过
And 请求体为 { query: '#(query)' , variables: '#(variables)'} .............. 通过
When 调用Post方法 .......................................................... 通过
Then 状态码为200 ........................................................... 通过
* 断言每个 $.data.allCustomerPremisesNetworks[*].security.status.enabled == true . 失败

堆栈跟踪:
com.intuit.karate.KarateException: 断言失败: EACH_EQUALS
  $ | 批量断言在索引0处失败 (LIST:BOOLEAN)
  [false]
  true

    $[0] | 不相等 (BOOLEAN:BOOLEAN)
    false
    true

classpath:net/charter/network/test/api/graphql/NetworkSecurity-PUT.feature:74
    在 <feature>.: * 断言每个 $.data.allCustomerPremisesNetworks[*].security.status.enabled == true (classpath:net/charter/network/test/api/graphql/NetworkSecurity-PUT.feature:74:74)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:36:00