与 squishtest 模块一起使用时,Squish 测试函数总是通过

Posted

技术标签:

【中文标题】与 squishtest 模块一起使用时,Squish 测试函数总是通过【英文标题】:Squish test functions always pass when used with squishtest module 【发布时间】:2021-09-24 11:47:35 【问题描述】:

我们在带有 Python 3.8.7 的 Windows 10 上使用 Squish for Qt 6.6.2,并使用带有 Robot Framework 4.0.1 的 squishtest 模块运行我们的测试。

我们在使用 Squish API 提供的 test 函数时遇到问题,使用此类调用完成的任何验证(例如 squishtest.test.imagePresent)都将通过。问题本身很容易确定,尽管验证失败,但函数调用本身正在通过而没有引发异常。这也可以从 squishr​​unner 提供的报告中得到验证,其中我们有 <scriptedVerificationResult type="FAIL" time="--"> 已通过的执行。

问题是,我们能否以任何方式将实际验证结果传递给机器人,以便相应地使测试失败?最好实时进行,而不是事后解析报告。

在 Squish 中这工作得非常好

def main():
    startApplication("AUT")
    snooze(2)
    test.imagePresent("image.png", "tolerant": True, "threshold": 85, 
    waitForObjectExists(names.sceneContainer_GraphWidget))

但是对于机器人,这总是通过

# In testSuite.robot

*** Settings ***
Library     MySquishLib

*** Test Cases ***
Test Image
    Start AUT
    Verify Image    image.png    "tolerant": True, "threshold": 85    names.sceneContainer_GraphWidget
# In MySquishLib.py

import squishtest
import names

def start_aut():
    squishtest.startApplication("AUT")

def verify_image(imageFile, imageParams, imageArea):
    squishtest.test.imagePresent(imageFile, imageParams, imageArea)

【问题讨论】:

test.imagePresent() 未记录为引发错误。对我来说,您的低容差阈值会导致“找到”地址簿主窗口,即使它实际上不在屏幕上。使用 squishtest 模块时无法重现该问题。 test.imagePresent() 按我的预期返回 true 或 false。在没有 Robot 框架的情况下使用 squishtest 时,你能重现这个问题吗? 我的措辞可能有点不清楚,但这正是这个问题的重点。我希望函数调用 A)返回 VP 的状态或 B)在失败的 VP 上抛出错误。起初,我预计容差也会成为问题,但如前所述,在 Squish 创建的 results.xml 中,VP 已按预期通过/失败。 @frog.ca “问题”实际上在于,正如您从问题中看到的那样,我实际上并没有在任何地方使用返回值。正如您所指出的 - 该函数确实正确返回 bool 值,并且不应该引发异常。此外,可以在运行时从results.xml 找到结果。如果使用xml3 报告,则在测试结束之前已经可以访问这些值。 【参考方案1】:

test 函数不应在执行期间引发异常,以便即使单个 VP 失败也能继续测试。然而,该函数确实返回了一个布尔值,正如预期的那样。通过使用

def verify_image(imageFile, imageParams, imageArea):
    if not squishtest.test.imagePresent(imageFile, imageParams, imageArea):
        raise Exception("Image was not found")

我能够顺利通过机器人测试。

【讨论】:

以上是关于与 squishtest 模块一起使用时,Squish 测试函数总是通过的主要内容,如果未能解决你的问题,请参考以下文章

与 Gooey 模块一起使用时功能不起作用

尝试将 css 模块与 react 和 snowpack 一起使用时出现运行时错误

将 Perl 与 xm_perl 模块一起使用时出错

pyqt 与 Anaconda 一起安装时找不到 PyQt5.QtWidgets 模块

将 ProGuard / Dexguard 与多个 Android Studio 模块一起使用

将角度服务与 es6 模块一起使用是不是有意义?