【问题标题】:Do not output logs to screen when running Rails tests运行 Rails 测试时不要将日志输出到屏幕
【发布时间】:2015-01-24 15:05:45
【问题描述】:

我需要为我的 Rails 应用程序运行测试,但似乎当我执行rake test:all 时,我会将所有日志输出到我的屏幕,包括执行的所有查询和调试消息。

有没有办法只显示有多少测试通过/失败以及失败(如果有的话?)。类似于 Django 测试输出的东西。

【问题讨论】:

  • 你使用什么测试框架?
  • Rails 自带的默认设置。
  • 默认Rails framework based on MiniTest,所以我认为你可以使用MiniTest#Reporters
  • 难道没有一些配置选项可以抑制所有这些调试消息吗?我不想为此安装另一个 gem...
  • 只是要知道,我试过使用 Minitest Reporters,结果是一样的。仍然显示调试消息。即使我在运行测试之前将日志级别明确设置为:error 并在测试中检查它,仍然会显示调试消息。很奇怪……

标签: ruby-on-rails ruby testing rake


【解决方案1】:

我自己解决了这个问题。

config/environments/test.rb 我添加了以下几行:

config.logger = Logger.new(STDOUT)
config.log_level = :error

ActiveRecord::Base.logger 使用上述配置,除非另有说明。要自定义其行为,请设置config.active_record.logger 或创建config.after_initialize 块并在其中设置ActiveRecord::Base.logger

这样,就有一个用于配置测试日志级别的集中位置,您可以在其中选择输出所有消息或仅输出部分消息。

请注意,执行的查询属于ActiveRecord::Base.logger,它们记录在:info 级别。因此,为了隐藏它们,请将日志级别设置为高于:info

【讨论】:

  • 解决了我的问题。奇怪的是,这在一夜之间就发生了,有什么想法可能是原因吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2013-12-10
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多