Ruby嵌套对象查询:测试结果中是否存在失败场景?
检查Ruby Newman测试结果中的失败场景
嘿,我来帮你搞定这个问题~从你给出的Newman::Results对象片段来看,目前展示的内容里还看不到明确的失败标记,但我们可以通过遍历对象的嵌套结构来准确判断是否存在失败场景。
核心思路
Newman的测试结果结构是:Results包含多个Scenario,每个Scenario下又包含多个Assertion。要找失败场景,本质就是检查有没有Assertion未通过的情况。
代码实现示例
假设你的测试结果对象存储在results变量中,可以用这段代码快速判断:
# 检查是否存在任何失败的场景 has_failed_scenarios = results.scenarios.any? do |scenario| # 检查当前场景下是否有失败的断言 scenario.assertions.any? do |assertion| # 大多数测试框架的断言会提供passed?方法,失败则返回false !assertion.passed? # 如果框架用的是status属性,可能写成:assertion.status == :failed end end # 输出结果 puts has_failed_scenarios ? "⚠️ 存在失败场景" : "✅ 所有测试场景都通过了"
如果你不确定断言的属性怎么办?
如果不清楚Newman::Assertion对象具体有哪些属性,可以先打印断言的完整结构来确认:
# 遍历所有场景和断言,打印详细信息 results.scenarios.each do |scenario| puts "\n场景名称: #{scenario.name}" scenario.assertions.each_with_index do |assertion, idx| puts "断言#{idx+1}详情: #{assertion.inspect}" end end
这样就能看到断言对象里的所有字段,比如是否有passed、failed、error这类表示结果的属性,再调整判断逻辑就好啦。
内容的提问来源于stack exchange,提问作者priorww1
相关产品推荐
相关产品推荐

