如何在不结束脚本的情况下从调用函数返回结束测试?

时间:2015-06-25 13:54:51

标签: testing automated-tests autoit

我正在使用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返回?

0 个答案:

没有答案