将自定义选项解析器实现为行为不起作用

时间:2015-06-26 20:13:37

标签: python configuration configparser user-data python-behave

我试图将自定义选项解析器实现为行为配置解析器,但还没有能够这样做。

我通过表现来调用behave_runner.py 这是behave_runner.py:

if __name__ == "__main__":
configuration.setup_parser().add_argument('-E', '--env', help="pass in the environment")
sys.exit(__main__.main())

我已经尝试过Monkey_patching它,这也是一个禁忌... --env是我想传入的配置解析器来读取behave.ini中的一个部分,如下所示:

[dev]
username = x
password = xx
server = xxx
[dev2]
username = y
password = yy
server = yyy

所以在environment.py中,我正在阅读使用配置解析器,但我似乎无法将自定义选项注入到行为解析器中,因此它不会选择behave -E dev之类的东西以及如何从我使用if configuration.something.something == 'dev'输入的自定义解析器中读取它?我搜索了很多地方,一切都指向了我不想用的用户数据。

我希望这个工作类似于选项解析器〜可以传递默认值而不是自定义内容。行为中#270的补丁修复也没有帮助我...提前感谢!

1 个答案:

答案 0 :(得分:0)

能够找出我自己的答案..而不是尝试向配置解析器添加新选项,我使用环境变量来设置我想要读取的配置部分:

import os
env = os.environ.get('ENV', failobj='dev')
if env in 'dev':
//do stuff here
elif env in 'dev2':
//do some other stuff here

我用(在windows中)运行它:

set ENV=dev
behave

我认为使用环境变量对我的案例来说是一个更好的选择......无论如何 - 只是为那些寻找替代品的人传播这个词。干杯!