我正在使用AutoIt编写自动化测试,并遵循以下基本格式:
Func MyTest($sInput)
Local $oTest = NewTest("Test Name")
$oTest.Setup()
;Run steps
$oTest.Assert($sSomeExpected, $sSomeActual)
$oTest.Teardown()
EndFunc
在Assert函数内部,如果断言失败,我会将测试结果设置为失败。我想要做的是完全结束测试,但不要结束整个脚本。那是因为我的脚本可能如下所示:
For $i = 0 To UBound($aInputs) - 1 Step 1
MyTest($aInputs[$i])
Next
因此,如果输入1的测试失败,我仍然希望能够为其他输入运行测试。理想情况下,我想在Assert中处理这个问题:
Func _assert($oSelf, $sExpected, $sActual)
If Not($sExpected = $sActual) Then
$oSelf.Result = 0
;Return from MyTest function without ending script??
EndIf
EndFunc
我不知道是否可以从Assert内部从MyTest返回。然而,我可以退出脚本,但正如所解释的,我不想这样做。即使我采用这种方法,这意味着为每个测试创建一个脚本,这个脚本可能会非常快速地膨胀。
我现在唯一可行的解决方法,就是从Assert返回True / False,每次都在MyTest
中检查:
If Not($oTest.Assert($sSomeExpected, $sSomeActual)) Then Return
但我认为这会使我的代码难以理解且难以维护。
如果每次调用Assert时,如果Assert失败而没有处理它,有没有办法让MyTest返回?