从使用nose运行测试的代码中,我如何检索已在命令行上传递的配置文件列表(无需自己解析args,因为nose应该在某处公开这些值),如,
nosetests -c default.ini -c staging.ini
这将导致,
[default.ini, staging.ini]
我似乎无法在 nose.config 对象上找到这些值。
似乎您的问题是您对配置文件的命名与默认的鼻子配置文件的命名不同。
来自nose.config
config_files = [
# Linux users will prefer this
"~/.noserc",
# Windows users will prefer this
"~/nose.cfg"
]
def user_config_files():
"""Return path to any existing user config files
"""
return filter(os.path.exists,
map(os.path.expanduser, config_files))
def all_config_files():
"""Return path to any existing user config files, plus any setup.cfg
in the current working directory.
"""
user = user_config_files()
if os.path.exists('setup.cfg'):
return user + ['setup.cfg']
return user
简而言之,nose 正在寻找名为 ~/.noserc 或 ~/nose.cfg 的默认配置文件。如果它们没有像这个鼻子那样命名,则不会拾取它们,您将不得不手动指定配置文件的名称,就像您在命令行上所做的那样
现在说,例如,您有一些对象配置,它是nose.config.Config的一个实例,那么获取配置文件名的最佳方法就是说
>>> from nose.config import Config
>>> c = Config()
>>> c.configure(argv=["nosetests", "-c", "foo.txt"])
>>> c.options.files
['foo.txt']