测试时抑制记录器
我想知道如何在测试时禁用Elixir中的日志记录。在我当前的代码中,我测试了记录器消息,所以我不想完全禁用它,但隐藏消息,直到任何测试停止传递。测试时抑制记录器
我使用mix和ExUnit来管理和测试我的项目。
mix test Compiling 2 files (.ex)
.........
17:59:18.446 [warn] Code seems to be empty
.
17:59:18.447 [warn] Code doesn't contain HLT opcode
.
17:59:18.448 [warn] Code doesn't contain HLT opcode
17:59:18.448 [error] Label error doesn't exist
.....
Finished in 0.07 seconds
16 tests, 0 failures
回答:
进入你的config/test.exs
文件把下面的配置记录程序:
config :logger, level: :error
如果您还没有具体的环境CONFIGS,把下面的行放在config/config.exs
:
config :logger, level: case Mix.env do
:test -> :error
_ -> :info
end
另一种选择是使用另一后端为日志消息(假设{:logger_file_backend, "~> 0.0"}
被包括在mix.exs
deps
部分):
config :logger, compile_time_purge_level: :debug,
format: "$date $time $metadata[$level] $message\n",
metadata: [:application, :module, :function, :file, :line],
backends: [{LoggerFileBackend, :info_warn_error}]
config :logger, :info_warn_error,
path: "log/info_warn_error.log", # or "/dev/null"
level: :warn
回答:
我在记录仪的文档斑remove_backend()
功能,所以在文件中使用 Logger.remove_backend(:console)
其中记录程序后应该被禁用,每个记录的消息都消失了(测试正在通过)。
编辑:我问Logger开发这个问题。显然,最好在测试之上使用@moduletag :capture_log
而不是删除后端。无论如何,工作,对我来说很好。
以上是 测试时抑制记录器 的全部内容, 来源链接: utcz.com/qa/266522.html