Я использую Marathon 2.0b4 для автоматизации тестов приложения.
Недостаток wait_p
, одного из элементов сценария, предоставляемого Marathon, заключается в том, что его таймаут по умолчанию составляет в жестком коде и составляет 60 секунд. Мне потребовалось большее время ожидания из-за длительного времени загрузки моего приложения.
[Я рассматривал возможность установки исправлений Marathon, но не хотел поддерживать параллельные версии и т. Д., Поэтому решил, что лучшим решением будет обходной путь на уровне тестового сценария.]
def wait_p_long(times, compID_name, ppty_name, ppty_value, compID_cell=None):
from marathon.playback import *
"""Wrapper around wait_p which takes exactly the same parameters as wait_p,
except that an extra first parameter is used to specify the number of times
wait_p is called"""
for i in range(1, times):
try:
wait_p(compID_name, ppty_name, ppty_value, compID_cell)
except:
if (i < times):
print "wait_p failed, trying again"
else:
raise
wait_p
- это сокращение от «свойства ожидания», и оно принимает 3 обязательных и один необязательный аргумент (имена аргументов довольно очевидны), и для этого нужно ожидать, чтобы указанное свойство указанного компонента быть равным указанному значению.
То, что намеревался сделать вышеупомянутый метод (Jython), это взять один дополнительный параметр, times
, который определяет количество попыток wait_p
, исключая исключения вплоть до последней попытки.
Однако этот метод не работает для меня, и я боюсь, что где-то там может быть какая-то синтаксическая или логическая ошибка. Есть какие-нибудь комментарии от python / jython gurus?
Спасибо!