我使用python-behave进行BDD测试,我必须从命令行传递一个URL(例如www.abc.com)。
$behave -u "www.abc.com"
为实现这一目标,我已阅读behave documentation,但没有足够的材料和解释来设置behave.ini文件。我也不确定behave.ini文件如何帮助我传递参数。
有人可以告诉我如何为行为设置命令行参数吗?
答案 0 :(得分:21)
过去需要上述建议的解决方案。
behave-1.2.5提供了一个“userdata”概念,允许用户定义其数据:
behave -D browser=firefox ...
还请参见: behave: userdata
答案 1 :(得分:19)
不,这是不可能的,因为parser
文件中configuration.py
parser
,defined只定义了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']