use*_*505 18 python bdd python-behave
我使用python-behave进行BDD测试,我必须从命令行传递一个URL(例如www.abc.com).
$behave -u "www.abc.com"
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我已阅读了行为文档,但没有足够的材料以及为设置behave.ini文件而给出的解释.我也不确定behave.ini文件如何帮助我传递参数.
有人可以告诉我如何设置命令行参数的行为?
小智 25
过去需要上面提出的建议解决方案.
behave-1.2.5提供了一个"userdata"概念,允许用户定义其数据:
behave -D browser=firefox ...
Run Code Online (Sandbox Code Playgroud)
还请参见: 表现:userdata
Omi*_*aha 21
不,这是不可能的,因为有一个parser
被定义在configuration.py
文件中,并且只允许定义选择它.
但是如果你想要的话(通过猴子补丁的帮助!),只需添加与其他选项相同的选项即可parser
.
为此,首先创建一个文件,然后在运行之前对其进行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()
Run Code Online (Sandbox Code Playgroud)
现在如果你跑python behave_run.py --help
,你可以看到你的新url
选择:
$ python behave_run.py --help | grep url
-u URL, --url URL Address of your url
Run Code Online (Sandbox Code Playgroud)
现在,您可以behave_run.py
像behave
文件一样运行此文件并传递您的url参数:
$ python behave_run.py --url http://google.com
Run Code Online (Sandbox Code Playgroud)
并且您可以访问此url
选项的值context.config.url
,例如在environment.py
文件中,然后将其设置为在其他函数中使用:
def before_all(context):
context.browser = webdriver.Firefox()
context.url = context.config.url
Run Code Online (Sandbox Code Playgroud)
注意:
如果你想调用python run_behave.py
的run_behave.py
任何地方,添加此行:
#!/usr/bin/env python
到第一行run_behave.py
并将其更改为可执行文件,chmod +x run_behave.py
然后将此文件复制到您的某个位置PATH
,例如/usr/local/bin
withsudo mv run_behave.py /usr/local/bin/run_behave.py