繁体   English   中英

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

[英]passing command line argument to python-behave

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

$behave -u "www.abc.com" 

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

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

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

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

behave -D browser=firefox ...

还请参见: 行为:userdata

过时的答案,目前支持自己,如本答案所述

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

但是,如果您愿意(借助猴子补丁!),只需将与其他选项相同的选项添加到此parser

为此,首先创建一个文件,例如behave_run.py并在运行behave之前修补此parser

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

您可以使用context.config.url访问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

Omid 出色答案的另一种选择是在您调用行为之前设置环境变量,例如:

TESTURL="www.abc.com" behave

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

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

behave -D NAME=VALUE

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

context.config.userdata['NAME']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM