Как получить текущий шаг поведения с Python?

Я использую поведение с Python для выполнения моих тестов. В файле шагов я хочу получить текущее имя шага, потому что если тест завершился неудачно, я сделаю снимок экрана и переименуйте файл в имя шага.

Что-то вроде этого:

Данный пользователь зарегистрирован
Когда пользователь что-то делает
Потом что-то происходит

И я хотел, чтобы мой код шага был следующим:

@given('user is logged in') try: # MY CODE HERE except: # GET THE STEP NAME HERE 

У кого-нибудь есть идея, как это сделать?

    One Solution collect form web for “Как получить текущий шаг поведения с Python?”

    Я сделал практически то, что вы пытаетесь сделать, сделайте скриншот неудавшегося теста, установив after_step в файле environment.py .

     def after_step(context, step): if step.status == "failed": take_the_shot(context.scenario.name + " " + step.name) 

    Скорее всего, вы захотите также указать имя сценария, если шаг может появиться в нескольких сценариях.

    Если вышеуказанное не работает для вас, к сожалению, behave не устанавливает поле step в context с текущим шагом, как это делается для scenario с текущим сценарием или feature с текущей функцией. У вас может быть крючок before_step который выполняет такое назначение, а затем на самом шаге вы получите доступ к имени шага как context.step.name . Что-то вроде:

     def before_step(context, step): context.step = step 

    И шаг реализации:

     def step_impl(context): if some_condition: take_the_shot(context.scenario.name + " " + context.step.name) 
    Python - лучший язык программирования в мире.