20

我正在使用 python-behave 进行 BDD 测试,我必须从命令行传递一个 URL(例如 www.abc.com)。

$behave -u "www.abc.com" 

为了实现这一点,我已经阅读了行为文档,但没有足够的材料以及为设置行为.ini 文件提供的解释。我也不确定behaviour.ini 文件如何帮助我传递参数。

有人可以告诉我如何为行为设置命令行参数吗?

4

4 回答 4

30

过去需要上述建议的解决方案。

行为 1.2.5 提供了一个“用户数据”概念,允许用户定义其数据:

behave -D browser=firefox ...

还请参见: 行为:用户数据

于 2015-02-20T21:56:52.813 回答
22

过时的答案, 目前支持自己,如this answer所述。

不,这是不可能的,因为文件parser定义了一个configuration.py,并且只允许它定义的选项

但是,如果您愿意(借助猴子补丁!),只需将您的选项与其他选项一样添加到 thisparser中。

为此,首先例如创建一个文件并在运行之前对其进行behave_run.py修补:parserbehave

from behave import configuration
from behave import __main__

# Adding my wanted option to parser.
configuration.parser.add_argument('-u', '--url', help="Address of your url")

# command that run behave.
__main__.main()

现在如果你运行python behave_run.py --help,你可以看到你的新url选项:

$ python behave_run.py --help | grep url
  -u URL, --url URL     Address of your url

现在,您可以像运行behave_run.py文件一样运行此文件behave并传递您的 url 参数:

$ python behave_run.py --url http://google.com

您可以使用 访问此url选项的值context.config.url,例如在environment.py文件中,然后将其设置为在其他功能中使用:

def before_all(context):
    context.browser = webdriver.Firefox()
    context.url = context.config.url

笔记:

如果您想从任何地方拨打电话python run_behave.py,请run_behave.py添加以下行:

#!/usr/bin/env python

到第一行run_behave.py并将其模式更改为可执行文件,chmod +x run_behave.py然后将此文件复制到您的一个位置PATH,例如/usr/local/binsudo mv run_behave.py /usr/local/bin/run_behave.py

于 2014-03-28T01:42:33.077 回答
2

Omid 的最佳答案的替代方法是在调用行为之前设置环境变量,例如:

TESTURL="www.abc.com" behave

这样做有一些注意事项,以及您将在此处的一些答案中定义的变量的不同范围/持久性的一些示例

于 2014-05-19T21:28:54.790 回答
2

正如jenisys所说,传递用户数据的方式是:

behave -D NAME=VALUE

从行为步骤文件访问它的方法是:

context.config.userdata['NAME']
于 2018-12-10T17:13:45.200 回答