测试时抑制记录器

我想知道如何在测试时禁用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.exsdeps部分):

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

回到顶部