Есть ли простой способ определить шаг как данный и когда

Я создаю тестовую среду Py Behave и имею ряд сценариев, в которых то, что раньше было шагом «Когда», становится заданным.

EG в одном сценарии

Given a user has is on the logon page 
When they login with credentials <user>
Then the user logs in 

Но в других сценариях

Given a user is on the logon page
And they login with credentials <user>

В моих шагах это будет выглядеть как

 @given('they login with credentials {user}')
 def step_impl(context):
    Do login code

 @when('they login with credentials {user}')
 def step_impl(context):
    Do login code

Есть ли способ избавить себя от необходимости записывать все эти шаги дважды, но иметь возможность определить «когда» как «данность»?


person Richard C    schedule 26.11.2019    source источник


Ответы (1)


Вы можете использовать декоратор @step, предоставленный в поведении

Сценарий первый

Given a user has is on the logon page 
When they login with credentials <user>
Then the user logs in

Сценарий второй

Given a user is on the logon page
And they login with credentials <user>

Решение:

@step('they login with credentials {user}')
 def step_impl(context):
    Do login code

ссылка: https://github.com/behave/behave/issues/550

person Vikas Mulaje    schedule 02.12.2019
comment
это все равно будет означать, что я пишу повторяющийся код в своем файле шагов. по-другому я собирался подойти к этому, прежде чем ответ, данный выше, я должен был назвать шаг в другом шаге. - person Richard C; 02.12.2019
comment
Нет, вам не нужно снова писать шаги, просто напишите одну функцию с декоратором @step, которая будет выполнять часть входа в систему, и вы можете использовать ее с заданным, когда и затем - person Vikas Mulaje; 02.12.2019
comment
спасибо, я неправильно понял описание, это еще один отличный способ справиться с этим, и в моем случае его намного проще реализовать, чем вышеописанное. - person Richard C; 02.12.2019