如何将 wait/sleep 装饰器添加到步骤函数(行为)?
How to add wait/sleep decorator to steps functions (Behave)?
使用Python/Selenium/Behave:
我想知道如何正确地将 wait/sleep 装饰器添加到步骤函数中?
我已经用我的装饰函数设置了一个 helper.py:
import time
def wait(secs):
def decorator(func):
def wrapper(*args, **kwargs):
ret = func(*args, **kwargs)
time.sleep(secs)
return ret
return wrapper
return decorator
class Helper(object):
pass
在我的步骤文件中,我在行为装饰器之后调用等待装饰器以匹配步骤:
from behave import step
from features.helper import wait
@step('I observe a login error')
@wait(3)
def step_impl(context):
#time.sleep(3)
assert context.login_page.check_login_error() is not None
但是当我从我的特征文件执行该步骤时,没有 wait/sleep 被执行,断言失败。在这种情况下如何执行等待装饰器?
我猜问题出在sleep
之前调用了目标函数。所以你可以交换 func
和 time.sleep
调用:
def wait(secs):
def decorator(func):
def wrapper(*args, **kwargs):
time.sleep(secs)
return func(*args, **kwargs)
return wrapper
return decorator
使用Python/Selenium/Behave:
我想知道如何正确地将 wait/sleep 装饰器添加到步骤函数中?
我已经用我的装饰函数设置了一个 helper.py:
import time
def wait(secs):
def decorator(func):
def wrapper(*args, **kwargs):
ret = func(*args, **kwargs)
time.sleep(secs)
return ret
return wrapper
return decorator
class Helper(object):
pass
在我的步骤文件中,我在行为装饰器之后调用等待装饰器以匹配步骤:
from behave import step
from features.helper import wait
@step('I observe a login error')
@wait(3)
def step_impl(context):
#time.sleep(3)
assert context.login_page.check_login_error() is not None
但是当我从我的特征文件执行该步骤时,没有 wait/sleep 被执行,断言失败。在这种情况下如何执行等待装饰器?
我猜问题出在sleep
之前调用了目标函数。所以你可以交换 func
和 time.sleep
调用:
def wait(secs):
def decorator(func):
def wrapper(*args, **kwargs):
time.sleep(secs)
return func(*args, **kwargs)
return wrapper
return decorator