Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在基于上下文的单元测试中更改ruby日志级别_Ruby_Unit Testing - Fatal编程技术网

如何在基于上下文的单元测试中更改ruby日志级别

如何在基于上下文的单元测试中更改ruby日志级别,ruby,unit-testing,Ruby,Unit Testing,我是ruby新手,所以如果这很简单或者我弄错了一些术语,请原谅我 我有一堆单元测试(实际上它们是另一个项目的集成测试,但它们使用ruby test/unit),它们都来自一个为log对象设置实例变量的模块。当我运行单个测试时,我希望log.level是debug,但当我运行套件时,我希望log.level是error。我所采用的方法是否可以做到这一点,或者代码是否需要重新构造 这是一个小例子,我到目前为止所做的 日志模块: #!/usr/bin/env ruby require 'logger

我是ruby新手,所以如果这很简单或者我弄错了一些术语,请原谅我

我有一堆单元测试(实际上它们是另一个项目的集成测试,但它们使用ruby test/unit),它们都来自一个为log对象设置实例变量的模块。当我运行单个测试时,我希望log.level是debug,但当我运行套件时,我希望log.level是error。我所采用的方法是否可以做到这一点,或者代码是否需要重新构造

这是一个小例子,我到目前为止所做的

日志模块:

#!/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

似乎我应该能够为每个必需的测试在测试套件中设置日志级别,但我认为我必须更明确地定义套件。似乎我应该能够为每个必需的测试在测试套件中设置日志级别,但我认为我必须更明确地定义套件。