如何在基于上下文的单元测试中更改ruby日志级别
我是ruby新手,所以如果这很简单或者我弄错了一些术语,请原谅我 我有一堆单元测试(实际上它们是另一个项目的集成测试,但它们使用ruby test/unit),它们都来自一个为log对象设置实例变量的模块。当我运行单个测试时,我希望log.level是debug,但当我运行套件时,我希望log.level是error。我所采用的方法是否可以做到这一点,或者代码是否需要重新构造 这是一个小例子,我到目前为止所做的 日志模块:如何在基于上下文的单元测试中更改ruby日志级别,ruby,unit-testing,Ruby,Unit Testing,我是ruby新手,所以如果这很简单或者我弄错了一些术语,请原谅我 我有一堆单元测试(实际上它们是另一个项目的集成测试,但它们使用ruby test/unit),它们都来自一个为log对象设置实例变量的模块。当我运行单个测试时,我希望log.level是debug,但当我运行套件时,我希望log.level是error。我所采用的方法是否可以做到这一点,或者代码是否需要重新构造 这是一个小例子,我到目前为止所做的 日志模块: #!/usr/bin/env ruby require 'logger
#!/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
嗯,我认为这样做的方法是更改日志模块来测试环境变量,比如test_SUITE,如果设置了日志级别,则将其设置为info,如果没有设置,则进行调试 然后更新测试套件,在顶部设置测试套件环境变量,在底部取消设置
看起来有点笨重,所以我想看看是否还有其他人有其他想法。嗯。我认为这样做的方法是将日志模块更改为测试环境变量,比如test_SUITE,如果设置了日志级别,则将其设置为info,如果没有设置,则进行调试 然后更新测试套件,在顶部设置测试套件环境变量,在底部取消设置
似乎有点笨重,所以我想看看是否还有其他人有其他想法。正如您所指出的,您需要在套件中设置一些内容。 在设置方法中可以使用如下内容。只需在套件中调用MyLog.setInSuite,它就会将级别设置为“设置信息”
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
正如您所指出的,您需要在套件中设置一些内容。 在设置方法中可以使用如下内容。只需在套件中调用MyLog.setInSuite,它就会将级别设置为“设置信息”
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
似乎我应该能够为每个必需的测试在测试套件中设置日志级别,但我认为我必须更明确地定义套件。似乎我应该能够为每个必需的测试在测试套件中设置日志级别,但我认为我必须更明确地定义套件。