【问题标题】:Implementing custom option parser into behave does not work将自定义选项解析器实现为行为不起作用
【发布时间】:2015-09-13 21:25:12
【问题描述】:

我正在尝试将自定义选项解析器实现到行为配置解析器中,但无法做到。

我正在通过行为调用behaviour_runner.py 这是behave_runner.py:

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

我已经尝试过猴子修补它,这也是不行的.. --env 是我想要传递给配置解析器以从行为.ini 中读取部分的内容,如下所示:

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

所以在 environment.py 中,我正在阅读 using config 解析器,但我似乎无法将我的自定义选项注入到行为解析器中,因此它没有获取类似 behave -E dev 的内容,以及如何从我使用 if configuration.something.something == 'dev' 放入的自定义解析器?我搜索了很多地方,所有内容都指向我不想使用的用户数据。

我希望它的工作类似于选项解析器 ~ 可以传入默认值,但不能传入自定义内容。 #270 在行为中的补丁修复对我也没有帮助..提前谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    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
    

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

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多