我想从鼻子配置文件中获取一些选项。 但我不想自己解析文件,所以我尝试使用鼻子api
我不确定如何解释这方面提到的信息:
import nose
def setup()
noseParser = nose.config.Config().getParser()
value = noseParser.get_option("debug-log")
这就是我认为应该有效的方式。但是value
仍然是None
,并且没有异常被提出。
我的用例:每次运行鼻子时删除调试日志文件。
答案 0 :(得分:1)
根据你提供的链接,getParser()返回'命令行选项解析器'。我不确定,但您可以查看nose.config.Config().debugLog
设置的内容。
答案 1 :(得分:0)
查看鼻子代码,我没有看到一个明确的API来从配置文件中获取选项。我看到的是:
nose.config.all_config_files()
和nose.config.user_config_files()
获取配置文件。ConfigParser.RawConfigParser
。因此,毕竟直接解析配置文件可能不是一个坏主意。
答案 2 :(得分:0)
我认为你最好的方法是write a custom plugin。那样,你让鼻子为你做的工作。听起来你想要做的就是在运行所有测试后删除debug-log
。要做到这一点,你需要一个实现finalize()方法的插件。在这个例子中,我还实现了options(),以便可以启用/禁用插件和configure(),以查找调试日志的位置。 Check out the full list of methods here
from nose.plugins import Plugin
import os
class AutoDeleteDebugLog(Plugin):
"""
Automatically deletes the error log after test execution. This may not be
wise, so think carefully.
"""
def options(self, parser, env):
"Register commandline options using Nose plugin API."
parser.add_option('--with-autodeletedebuglog', action='store_true',
help='Delete the debug log file after execution.')
self.debuglog = None
def configure(self, options, conf):
"Register commandline options using Nose plugin API."
self.enabled = options.autodeletedebuglog
self.debuglog = options.debugLog
def finalize(self, result):
"Delete debug log file after all results are printed."
if os.path.isfile(self.debuglog):
os.remove(self.debuglog)
编写插件后,您必须使用nose注册它,并在执行时启用它。有are instructions for that here。您可能还想使用score
属性来确保您的插件最后运行。