NOSE报告命令行参数的KeyError,无法找出原因

时间:2015-12-22 23:21:35

标签: python bash ubuntu-14.04 nose

我在Ubuntu Linux上使用NOSE 1.3.4版本,使用Python 2.7。我无法获得NOSE接受的有效命令行。我反复得到这个错误:

Traceback (most recent call last):
  File "bin/nosetests", line 86, in 
    sys.exit(nose.run_exit())
  File "/home/testrunner/.virtualenvs/bqt/parts/nose/nose/core.py", line 121, in __init__
    **extra_args)
  File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__
    self.parseArgs(argv)
  File "/home/testrunner/.virtualenvs/bqt/parts/nose/nose/core.py", line 145, in parseArgs
    self.config.configure(argv, doc=self.usage())
  File "/home/testrunner/.virtualenvs/bqt/parts/nose/nose/config.py", line 346, in configure
    self.plugins.configure(options, self)
  File "/home/testrunner/.virtualenvs/bqt/parts/nose/nose/plugins/manager.py", line 288, in configure
    cfg(options, config)
  File "/home/testrunner/.virtualenvs/bqt/parts/nose/nose/plugins/manager.py", line 99, in __call__
    return self.call(*arg, **kw)
  File "/home/testrunner/.virtualenvs/bqt/parts/lib/src/f5test/noseplugins/extender/__init__.py", line 29, in simple
    result = meth(*arg, **kw)
  File "/home/testrunner/.virtualenvs/bqt/parts/lib/src/f5test/noseplugins/testconfig.py", line 109, in configure
    exec('config%s = %s' % (ns, val))
  File "", line 1, in 
**KeyError: 'stages'**

我尝试在BASH脚本中指定命令行(这是我最终需要它的工作方式)并直接从命令行指定相同的结果。我已经验证我的.yaml参数是正确的,并且我的测试路径是正确的。

以下是我尝试过的不同命令行,所有命令行都有相同的错误。看起来像某种"或者'扩张问题,但我无法弄清楚原因。

1) bin / nosetests -sv --log-config = logging.conf --console-redirect --tc' stages.enabled:" 0"' -A'排名> 0和等级< 11和模块' --tc-file = config / users / mgmt.yaml tests / version_compare.py

2) bin / nosetests -sv --log-config = logging.conf --console-redirect --tc stages.enabled:0 -A' rank> 0和等级< 11和模块' --tc-file = config / users / mgmt.yaml tests / version_compare.py

3) bin / nosetests -sv --log-config = logging.conf --console-redirect --tc stages.enabled:" 0" -A'排名> 0和等级< 11和模块' --tc-file = config / users / mgmt.yaml tests / version_compare.py

4) bin / nosetests -sv --log-config = logging.conf --console-redirect --tc stages.enabled:0 --tc-file = config / users / mgmt.yaml tests / version_compare.py

我已删除所有可能的参数以消除变量,但没有运气。我无法找到一个NOSE命令行参数来让它回显出它认为命令行的内容。

如果可以,请帮忙。我花了很多时间试图解决这个问题。

1 个答案:

答案 0 :(得分:1)

首先,尝试使用--tc-exact代替--tc(后者似乎将stages.enabled分成两个单独的键。)

另外,我在代码中看到了这样的评论:

# BUG: Breaks if the config value you're overriding is not
# defined in the configuration file already. TBD

因此,请检查stages.enabled

中是否已宣布config/users/mgmt.yaml

希望有所帮助!