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

时间:2017-06-17 19:22:49

标签: python bdd 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选择器和网址的地图文件链接为我要使用的步骤的变量? 像这样的东西:

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

我试过这个

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

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

1 个答案:

答案 0 :(得分: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。