如何在 运行 ExUnit 测试时仍然将日志打印到控制台?
How do I still print logs to console while running ExUnit tests?
为了在失败的集成测试期间进行调试,我希望仍然能够看到我的应用程序日志。有没有我可以传递给 mix test
任务来完成此任务的命令?
每个混音项目都有一个 config.exs
文件。当 mix 开始时,它会加载这个文件。 elixir 中的一个常见模式是为不同的环境定义配置,例如 test.exs
、dev.exs
、prod.exs
等
Phoenix 等许多项目会在您的 config
文件夹中为您生成这些文件,您会在 config.exs
行中看到这一行:
import_config "#{Mix.env}.exs"
当您 运行 mix test
时,它会将 MIX_ENV
环境变量设置为 "test",这意味着 import_config 行会加载您的 test.exs
文件。
因此,为了仅为您的测试设置日志记录级别,您可以在 test.exs
文件中编写以下内容:
# Print only warnings and errors during test
config :logger, level: :warn
为了在 mix test
上显示 IO.inspects
和其他调试日志,更改以下配置:
- 在
config/test.exs
中找到以下行:
# Print only warnings and errors during test
config :logger, level: :warn
- 注释掉上一行并使用
compile_time_purge_matching
选项添加以下配置:
config :logger,
backends: [:console],
compile_time_purge_matching: [
[level_lower_than: :debug]
]
完成测试调试后,注释掉
compile_time_purge_matching
在步骤 2 中配置并取消注释
您的原始 level: :warn
配置以避免混乱的测试日志。
旧版本注意:如果您使用的是旧版本的 Elixir,
使用以下已弃用的配置代替 compile_time_purge_matching
:
config :logger,
backends: [:console],
compile_time_purge_level: :debug
compile_time_purge_level: debug
仍可在 Elixir 1.12 上使用,但有弃用警告。
为了在失败的集成测试期间进行调试,我希望仍然能够看到我的应用程序日志。有没有我可以传递给 mix test
任务来完成此任务的命令?
每个混音项目都有一个 config.exs
文件。当 mix 开始时,它会加载这个文件。 elixir 中的一个常见模式是为不同的环境定义配置,例如 test.exs
、dev.exs
、prod.exs
等
Phoenix 等许多项目会在您的 config
文件夹中为您生成这些文件,您会在 config.exs
行中看到这一行:
import_config "#{Mix.env}.exs"
当您 运行 mix test
时,它会将 MIX_ENV
环境变量设置为 "test",这意味着 import_config 行会加载您的 test.exs
文件。
因此,为了仅为您的测试设置日志记录级别,您可以在 test.exs
文件中编写以下内容:
# Print only warnings and errors during test
config :logger, level: :warn
为了在 mix test
上显示 IO.inspects
和其他调试日志,更改以下配置:
- 在
config/test.exs
中找到以下行:
# Print only warnings and errors during test
config :logger, level: :warn
- 注释掉上一行并使用
compile_time_purge_matching
选项添加以下配置:
config :logger,
backends: [:console],
compile_time_purge_matching: [
[level_lower_than: :debug]
]
完成测试调试后,注释掉
compile_time_purge_matching
在步骤 2 中配置并取消注释
您的原始 level: :warn
配置以避免混乱的测试日志。
旧版本注意:如果您使用的是旧版本的 Elixir,
使用以下已弃用的配置代替 compile_time_purge_matching
:
config :logger,
backends: [:console],
compile_time_purge_level: :debug
compile_time_purge_level: debug
仍可在 Elixir 1.12 上使用,但有弃用警告。