将命令行参数传递给python beh

2024-04-29 01:49:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

$behave -u "www.abc.com" 

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

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


Tags: 文件命令行comurl参数documentationwwwbdd
3条回答

过时的答案, 当前支持自身,如本answer所述。

不,这是不可能的,因为在configuration.py文件中有一个parser就是defined,并且只有allow定义了options

但如果你想你可以(通过猴子补丁的帮助!),只需将与其他选项相同的选项添加到此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文件,并传递您的url参数:

$ 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的一个位置,例如使用sudo mv run_behave.py /usr/local/bin/run_behave.py/usr/local/bin

上述建议的解决办法在过去是必要的。

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

behave -D browser=firefox ...

另请参见:behave: userdata

Omid的另一个好答案是,在调用行为之前设置环境变量,比如:

TESTURL="www.abc.com" behave

这样做有一些注意事项,还有一些例子说明了在某些答案中定义的变量的不同作用域/持久性here

相关问题 更多 >