测试者创建的特殊函数

当 Squish 执行测试脚本时,它会以特殊方式处理三个函数。在这些函数中,main 函数必须在每个测试中存在,而其他两个 initcleanup 函数则是可选的。其他函数不会得到特殊待遇,因此您可以在测试中包含所需的支持函数的任意数量,并且这些函数可以根据需要由 main 函数(或另外两个特殊函数之一)调用。

由于 Squish 特别处理了名为 maininitcleanup 的函数,因此这些名称应仅用于实现 Squish 所期望的目的的函数,具体内容如下。

cleanup()

如果您创建了一个名为 cleanup 的函数,Squish 将在 main 函数执行完毕后调用该函数(无论它是否正常终止——即使 main 函数由于未捕获的异常而被中断),作为测试执行完成前最后采取的操作。(用于此目的的函数通常在单元测试框架中称为“teardown”。)

此函数可能有用,可以删除 AUT 在测试运行过程中创建的任何文件。

init()

当测试被录制时,Squish 将调用 ApplicationContext startApplication(autName) 函数作为 main 函数中的第一个语句。如果您需要在 AUT 启动之前执行一些代码,您可以将该代码插入到 main 函数的开始处,在调用 ApplicationContext startApplication(autName) 函数之前。这是在 AUT 启动之前执行代码的建议方法,这使得使用 init 函数变得不必要。(用于此目的的函数通常在单元测试框架中称为“setup”。)

可能存在一种情况,您希望在没有明确调用 ApplicationContext startApplication(autName) 函数的情况下启动 AUT:只需在 测试套件设置视图 中选中 自动启动 AUT 复选框。如果您这样做,则无法通过 Squish 在 AUT 启动之前执行代码。

在某些情况下,您可能希望在 AUT 启动之前进行初始化,实际上在您自己选择的时间启动 AUT。这可以通过将 测试套件设置视图 中的 应用程序 设置为 "<没有应用程序>" 来实现。这意味着当测试运行时,Squish 不会能够启动 AUT,因为它不知道 AUT 的名称,因此 Squish 将从执行 init 函数开始。在这些情况下,您负责在 init 函数内部某个时间点使用 ApplicationContext startApplication(autName) 函数启动 AUT。

main?

您必须在每个测试脚本中创建一个名为 main 的函数。如果您录制了一个测试,Squish 将自动将其记录到名为 main 的函数中。当 Squish 被告知运行一个测试时,如果 测试套件设置视图 中的 自动启动 AUT 复选框未被选中(默认状态),Squish 将从执行测试的 main 函数开始。对于未经手动编辑的已录制的测试,main 函数中的第一个语句是对 ApplicationContext startApplication(autName) 函数的调用。

在许多情况下,创建一个main函数,可能还附带一些辅助函数,已经足够完美。但是,在某些情况下,您可能想执行一些独立的初始化、清理,或者两者都是。对于初始化,您可以直接在调用ApplicationContext startApplication(autName)函数之前在main函数中插入代码;或者您可以创建一个初始化函数(不是命名为 init)并在调用ApplicationContext startApplication(autName)函数之前在main函数中调用它。对于清理,您可以定义一个名为cleanup()的函数,当 AUT 终止时(无论是正常终止还是异常终止),Squish 将会调用该函数。

如果测试套件设置视图中的复选框自动启动 AUT被勾选,Squish 将首先尝试启动 AUT(除非测试套件设置视图中的应用程序设置为 "<No Application>"),然后调用init()函数(该函数应存在——如果应用程序设置为"<No Application>",则通过调用ApplicationContext startApplication(autName)函数来启动 AUT),一旦 AUT 运行,Squish 将调用main函数。

waitUntilObjectItemReady(item)

waitForObjectItem()可以在需要时执行附加的自定义操作。这是通过定义一个名为waitUntilObjectItemReady(item)的回调函数来完成的,该函数接受一个参数,可以按需使用或忽略。如果定义了waitUntilObjectItemReady(item)函数,则在每次调用waitForObjectItem时,除了其正常操作外,它还会调用自定义的waitUntilObjectItemReady()函数,将即将返回的项目作为参数传递。

waitUntilObjectReady(anObject)

如果需要,waitForObject可以执行附加的自定义操作。这是通过定义一个名为waitUntilObjectReady(anObject)的回调函数来完成的,该函数接受一个参数(一个对象),可以按需使用或忽略。如果定义了waitUntilObjectReady,则在每次调用waitForObject时,除了其正常操作外,它还会调用waitUntilObjectReady,将等待的对象作为参数传递。有关示例,请参阅如何同步对测试网页加载进行测试中的 AJAX 加载示例。

©2024 Qt 公司有限公司。本文档中所含的贡献是各自所有者的版权。
本提供的文档根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 的条款获得许可。
Qt 以及相应的标志是芬兰以及/或其他国家的 Qt 公司的商标。所有其他商标均为各自所有者的财产。