调用squishtest模块的Squish测试函数始终通过,如何获取真实验证结果
问题根因
Squish的test.*系列验证函数默认仅将验证结果写入Squish内部报告,不会主动抛出异常;原生Squish运行环境会自动读取内部报告结果标记测试成败,但Robot Framework仅能通过捕获异常、判断返回值两种方式识别测试失败,无法直接读取Squish的内部报告数据,因此会出现验证实际失败但用例仍被判通过的问题。
解决方案
有两种可直接实现实时结果传递的方案,无需后续解析Squish报告:
方案1:全局开启Squish验证失败自动抛异常
Squish的squishtest.test模块提供了throwExceptions开关,开启后所有验证失败都会直接抛出异常,Robot Framework捕获后会自动标记用例失败,修改后的自定义库代码如下:
import squishtest import names from robot.libraries.BuiltIn import BuiltIn # 库初始化时开启验证失败抛异常的开关 squishtest.test.throwExceptions = True def start_aut(): squishtest.startApplication("AUT") def verify_image(imageFile, imageParams, imageArea): # 验证失败会自动抛异常,无需额外处理 squishtest.test.imagePresent(imageFile, imageParams, imageArea)
方案2:手动获取验证返回值判断结果
如果不希望全局开启异常抛出,可直接读取test.*函数的布尔返回值,手动触发Robot Framework的失败逻辑:
import squishtest import names from robot.libraries.BuiltIn import BuiltIn def start_aut(): squishtest.startApplication("AUT") def verify_image(imageFile, imageParams, imageArea): verify_result = squishtest.test.imagePresent(imageFile, imageParams, imageArea) if not verify_result: BuiltIn().fail(f"图片验证失败:{imageFile} 匹配度未达到设定阈值")
注:以上两种方案均兼容你使用的Squish for Qt 6.6.2版本,无需额外依赖。
内容的提问来源于stack exchange,提问作者Morkkis
相关产品推荐
相关产品推荐

