Как я могу изменить уровень журнала ruby ​​в модульных тестах на основе контекста - PullRequest
1 голос
/ 24 мая 2010

Я новичок в ruby, так что прости меня, если это просто или я неправильно понял терминологию.

У меня есть куча модульных тестов (на самом деле это интеграционные тесты для другого проекта, но они используют ruby ​​test / unit), и все они включены из модуля, который устанавливает переменную экземпляра для объекта журнала. Когда я запускаю отдельные тесты, я бы хотел, чтобы log.level был отладочным, но когда я запускаю набор, я бы хотел, чтобы log.level был ошибкой. Возможно ли это сделать с помощью подхода, который я использую, или код должен быть реструктурирован?

Вот небольшой пример того, что у меня есть.

Модуль регистрации:

#!/usr/bin/env ruby

require 'logger'

module MyLog

  def setup
    @log = Logger.new(STDOUT)
    @log.level = Logger::DEBUG
  end
end

Тест:

#!/usr/bin/env ruby

require 'test/unit'
require 'mylog'

class Test1 < Test::Unit::TestCase

  include MyLog

  def test_something
    @log.info("About to test something")
    # Test goes here
    @log.info("Done testing something")
  end
end

Набор тестов, состоящий из всех тестов в его каталоге:

#!/usr/bin/env ruby

Dir.foreach(".") do |path|
  if /it-.*\.rb/.match(File.basename(path))
    require path
  end
end

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Как вы заметили, вам нужно будет что-то установить в комплекте.Нечто подобное может быть использовано в методе настройки.Просто вызовите MyLog.setInSuite в вашем комплекте, и он установит уровень INFO при настройке.

module MyLog
  @@use_info = false

  def MyLog.setInSuite()
    @@use_info = true
  end

  def setup
    @log = Logger.new(STDOUT)
    if (@@use_info)
      @log.level = Logger::INFO
    else
      @log.level = Logger::DEBUG
    end
  end
end
0 голосов
/ 27 мая 2010

Хм. Я думаю, что способ сделать это состоит в том, чтобы изменить модуль ведения журнала, чтобы проверить переменную среды, скажем, TEST_SUITE, и установить для уровня ведения журнала значение info, если оно установлено, и отладить, если это не так.

Затем обновите ваш набор тестов, чтобы установить переменную среды TEST_SUITE в верхней части, и отмените ее в нижней части.

Кажется немного неуклюжим, поэтому мне было бы интересно узнать, есть ли у кого-нибудь еще какие-либо идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...