Как я могу передать переменную из шага Python-Behave?

В основном я написал шаг под названием @When("I go to {url}")

Затем я вызвал его из файла функций, используя When I go to http://youtube.com, и это сработало.

Но я хочу назвать это с помощью When I go to YouTube

То же самое произойдет с селекторами css (ибо Then logo is visible выглядит красивее, чем Then div#id.class is visible)

Как я могу связать файл карты, содержащий эти селекторы css и URL-адреса, в качестве переменных для использования в моих шагах? Что-то вроде этого:

YouTube = "http://youtube.com"
logo = "div#id.class"

я пробовал это

def before_all(context):
    global YouTube
    YouTube = "http://youtube.com"

И тогда я бы eval(url) внутри шага, но он продолжал говорить, что YouTube не определен


person Franco Roura    schedule 17.06.2017    source источник


Ответы (1)


Вы должны использовать словарь предопределенных URL-адресов вместо переменных. Добавьте это в файл реализации шагов:

websites = {'youtube': 'http://youtube.com', 'somesite': 'http://somesite.com'}

@When("I go to {website}")
def when_i_go_to_website(context, website):
    context.url = websites[website]

context.url будет доступен на всех следующих шагах.

Вы можете захотеть окружить строку кода try / except, чтобы поймать KeyErrors.

person Klaus D.    schedule 17.06.2017