Обработка ошибок в UFT/QTP

У меня есть структура, где методы вызываются внутри действия из библиотек функций. Я пытаюсь сделать обработку ошибок, чтобы избежать ошибок, генерируемых кодом, написанным внутри функции библиотеки.

Ниже мой код действия:

on error resume next
call TestMe()
if err.number Then: msgbox err.description
on error goto 0

А вот функция внутри библиотеки функций:

Function TestMe()
   x = 1/0
End Function

Когда я выполню свой тест, on error resume next кажется, не работает, так как я получаю всплывающее сообщение об ошибке для деления на ноль внутри функции TestMe().

Как я могу обработать эти ошибки, не перемещая код?

3 ответа

Удивительно, но все время использование QTP/UFT никогда не сталкивалось с таким случаем. Это было довольно интригующе. Я обнаружил (или так кажется на первый взгляд), что сфера on error resume next ограничен своим уровнем (Библиотека / Действие) и не может быть перенесен ни на один из них.

Вы можете попробовать что-то вроде:

Код действия:

Call Test3()

Библиотека функций:

Function Test1()
      x = 1/0
End Function

Function Test2()
   Call Test1()
   MsgBox "Test2"
End Function

Function Test3()
   On Error Resume next
   Call Test2()
   MsgBox err.Description
End Function

Выполнение с использованием этого оператора продолжается до тех пор, пока не будет найден обработчик. Таким образом, вы можете создать условие, когда захотите.

Другой альтернативой является использование флага (может быть переменной среды), например

Environment("Flag") = True

Чье состояние можно проверить непосредственно в коде действия

Надеюсь это поможет. Я все еще попытаюсь покопаться больше об этом

Проверьте статью ниже. Это объясняет ту же проблему в деталях

https://sumeetkushwah.com/2014/08/12/implementing-try-catch-functionality-in-qtpuft/

on error resume next

call TestMe()

on error goto 0

if err.number Then: msgbox err.description

Function TestMe()

   x = 1/0

End Function
Другие вопросы по тегам