首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将等待/睡眠装饰器添加到步骤函数(行为)?

如何将等待/睡眠装饰器添加到步骤函数(行为)?
EN

Stack Overflow用户
提问于 2020-05-28 16:16:37
回答 1查看 1.1K关注 0票数 0

使用Python/Selenium/Behave:

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

我已经用我的装饰器函数设置了一个helper.py:

代码语言:javascript
复制
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

在我的步骤文件中,我在行为装饰器之后调用等待装饰器,以匹配步骤:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 17:22:48

我猜问题是由于在sleep之前调用目标函数造成的。因此,您可以只交换functime.sleep调用:

代码语言:javascript
复制
def wait(secs):
     def decorator(func):
         def wrapper(*args, **kwargs):
             time.sleep(secs)
             return func(*args, **kwargs)
         return wrapper
     return decorator
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62060041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档