获取nosetests配置选项

时间:2011-12-13 20:08:49

标签: python configuration nosetests

我想从鼻子配置文件中获取一些选项。 但我不想自己解析文件,所以我尝试使用鼻子api

我不确定如何解释这方面提到的信息:

import nose

def setup()
  noseParser = nose.config.Config().getParser()
  value = noseParser.get_option("debug-log")

这就是我认为应该有效的方式。但是value仍然是None,并且没有异常被提出。

我的用例:每次运行鼻子时删除调试日志文件。

3 个答案:

答案 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属性来确保您的插件最后运行。