我正在使用 python-behave 进行 BDD 测试,我必须从命令行传递一个 URL(例如 www.abc.com)。
$behave -u "www.abc.com"
为了实现这一点,我已经阅读了行为文档,但没有足够的材料以及为设置行为.ini 文件提供的解释。我也不确定behaviour.ini 文件如何帮助我传递参数。
有人可以告诉我如何为行为设置命令行参数吗?
我正在使用 python-behave 进行 BDD 测试,我必须从命令行传递一个 URL(例如 www.abc.com)。
$behave -u "www.abc.com"
为了实现这一点,我已经阅读了行为文档,但没有足够的材料以及为设置行为.ini 文件提供的解释。我也不确定behaviour.ini 文件如何帮助我传递参数。
有人可以告诉我如何为行为设置命令行参数吗?
过时的答案, 目前支持自己,如this answer所述。
不,这是不可能的,因为文件parser
中定义了一个configuration.py
,并且只允许它定义的选项。
但是,如果您愿意(借助猴子补丁!),只需将您的选项与其他选项一样添加到 thisparser
中。
为此,首先例如创建一个文件并在运行之前对其进行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
并传递您的 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/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']