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

