将命令行参数传递给python-behave

时间:2014-03-20 09:26:22

标签: python bdd python-behave

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

$behave -u "www.abc.com" 

为实现这一目标,我已阅读behave documentation,但没有足够的材料和解释来设置behave.ini文件。我也不确定behave.ini文件如何帮助我传递参数。

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

4 个答案:

答案 0 :(得分:21)

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

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

behave -D browser=firefox ...

还请参见: behave: userdata

答案 1 :(得分:19)

不,这是不可能的,因为parser文件中configuration.py parserdefined只定义了allow。< / p>

但是如果你想要的话(通过猴子补丁的帮助!),只需将你的选项与其他选项一样添加到behave_run.py

为此,请首先创建一个文件,例如parser并在运行behave之前修补此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文件一样运行此$ 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/bin的某个位置,例如sudo mv run_behave.py /usr/local/bin/run_behave.py与{{1}}

答案 2 :(得分:1)

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

TESTURL="www.abc.com" behave

这样做有一些警告,以及一些答案的不同范围/持久性的一些例子,你将在一些答案中定义here

答案 3 :(得分:1)

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

behave -D NAME=VALUE

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

context.config.userdata['NAME']