I am using Marathon 2.0b4 to automate tests for an application.
A shortcoming of wait_p
, one of the script elements provided by Marathon, is that its default timeout is hardcoded to be 60 seconds. I needed a larger timeout due to the long loading times in my application.
[I considered patching Marathon, but didn t want to maintain parallel versions etc., so figured that a better solution would actually be a workaround at the test script level.]
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
is short for "wait property", and it takes in 3 compulsory and one optional argument (the argument s names are rather self-explanatory), and what it does is wait for a speicifed property of the specified component to be equals to the specified value.
What the above method (Jython) intends to do is take one extra parameter, times
, which specifies the number of times to attempt wait_p
, suppressing the exceptions up until the last try.
However, this method isn t working for me, and I am afraid there might be some syntactical or logical error somewhere in there. Any comments from python / jython gurus out there?
Thanks!