如何将等待/睡眠修饰符添加到步骤功能(行为)?

问题描述 投票:0回答:1

使用Python / Selenium / Behave:

我想知道如何正确地将等待/睡眠装饰器添加到步骤功能?

我已经用我的装饰器功能设置了一个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

但是当我从功能文件执行步骤时,没有等待/睡眠正在执行,并且断言失败。在这种情况下如何执行等待装饰器?

python python-decorators python-behave
1个回答
1
投票

我想这个问题是由于在sleep之前调用了目标函数。因此,您可以只交换functime.sleep调用:

def wait(secs):
     def decorator(func):
         def wrapper(*args, **kwargs):
             time.sleep(secs)
             return func(*args, **kwargs)
         return wrapper
     return decorator
© www.soinside.com 2019 - 2024. All rights reserved.