Как добавить декоратор ожидания / сна в функции шагов (поведение)? - PullRequest
0 голосов
/ 28 мая 2020

Использование 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

Но когда я выполняю шаг из моего файла функций, не выполняется ожидание / сон и утверждение не выполняется. Как в этом случае выполнить декоратор ожидания?

1 Ответ

1 голос
/ 28 мая 2020

Думаю, проблема связана с вызовом целевой функции до 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
...