如何从 Python-Behave 步骤传递变量?

How can I pass a variable from the Python-Behave step?

基本上我写了一个步骤叫做 @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 更漂亮)

如何 link 一个包含此 css 选择器和 URL 作为我的步骤使用的变量的映射文件? 是这样的:

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

我试过了

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

然后我会 eval(url) 在步骤中,但它一直说 YouTube 未定义

您应该使用预定义 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。