Получить варианты конфигурации тестов носа - PullRequest
2 голосов
/ 14 декабря 2011

Я хочу получить некоторые параметры из файла конфигурации носа.Но я не хочу анализировать файл самостоятельно, поэтому я пытаюсь использовать нос api

Я не уверен, как интерпретировать информацию, упомянутую на этой стороне:

import nose

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

Я так думаю, это должно работать.Но value продолжает оставаться None, и исключение не возникает.

Мой сценарий использования: Удаляйте файл журнала отладки каждый раз, когда работает нос.

Ответы [ 3 ]

1 голос
/ 14 декабря 2011

По предоставленной вами ссылке getParser () возвращает ' командную строку option parser'.Я не уверен, но вы можете проверить, на что установлено значение nose.config.Config().debugLog.

0 голосов
/ 05 февраля 2013

Я думаю, что ваш лучший подход - написать собственный плагин . Таким образом, вы позволяете носу делать всю работу за вас. Похоже, что вы хотите сделать, это удалить debug-log после того, как все тесты были выполнены. Для этого вам понадобится плагин, который реализует метод finalize (). В этом примере я также реализовал options (), чтобы плагин можно было включить / отключить и настроить (), чтобы найти местоположение журнала отладки. Ознакомьтесь с полным списком методов здесь .

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)

Как только вы напишите свой плагин, вам нужно будет зарегистрировать его с носом и включить его во время выполнения. инструкции для этого здесь . Вы также можете поиграть с атрибутом score, чтобы убедиться, что ваш плагин запущен последним.

0 голосов
/ 14 декабря 2011

Глядя на носовой код, я не вижу четкого API для получения опций из файлов конфигурации.Я вижу следующее:

  • Вы можете получить файлы конфигурации из nose.config.all_config_files() и nose.config.user_config_files().
  • , так как они не используют какой-либо пользовательский класс синтаксического анализа, а просто ConfigParser.RawConfigParser.

Следовательно, может быть, не так уж и плоха идея разобрать файлы конфигурации напрямую.

...