用法:
@test_logs [log_patterns...] [keywords] expression
使用 collect_test_logs
收集 expression
生成的日志记录列表,检查它们是否匹配序列 log_patterns
,并返回 expression
的值。 keywords
提供一些简单的日志记录过滤:min_level
关键字控制为测试收集的最低日志级别,match_mode
关键字定义如何执行匹配(默认 :all
检查所有日志和模式成对匹配;使用 :any
检查模式是否在序列中的某个位置至少匹配一次。)
最有用的日志模式是 (level,message)
形式的简单元组。可以使用不同数量的元组元素来匹配其他日志元数据,对应于通过 handle_message
函数传递给 AbstractLogger
的参数:(level,message,module,group,id,file,line)
。默认情况下,存在的元素将与使用 ==
的日志记录字段成对匹配,在特殊情况下,Symbol
可用于标准日志级别,而模式中的 Regex
将匹配字符串或使用 occursin
的符号字段。
例子
考虑一个记录警告和一些调试消息的函数:
function foo(n)
@info "Doing foo with n=$n"
for i=1:n
@debug "Iteration $i"
end
42
end
我们可以使用
@test_logs (:info,"Doing foo with n=2") foo(2)
如果我们还想测试调试消息,则需要使用 min_level
关键字启用这些消息:
@test_logs (:info,"Doing foo with n=2") (:debug,"Iteration 1") (:debug,"Iteration 2") min_level=Logging.Debug foo(2)
如果要测试是否生成了某些特定消息而忽略其余消息,可以设置关键字 match_mode=:any
:
@test_logs (:info,) (:debug,"Iteration 42") min_level=Logging.Debug match_mode=:any foo(100)
宏可以与 @test
链接以测试返回值:
@test (@test_logs (:info,"Doing foo with n=2") foo(2)) == 42
如果要测试是否没有警告,可以省略指定日志模式并相应地设置min_level
:
# test that the expression logs no messages when the logger level is warn:
@test_logs min_level=Logging.Warn @info("Some information") # passes
@test_logs min_level=Logging.Warn @warn("Some information") # fails
如果要测试
中是否存在不是由 stderr
@warn
生成的警告(或错误消息),请参阅
。@test_nowarn
相关用法
- Julia Test.@test_skip用法及代码示例
- Julia Test.@test_throws用法及代码示例
- Julia Test.@test_broken用法及代码示例
- Julia Test.@test_deprecated用法及代码示例
- Julia Test.@test用法及代码示例
- Julia Test.@testset用法及代码示例
- Julia Threads.atomic_cas!用法及代码示例
- Julia Threads.atomic_min!用法及代码示例
- Julia Timer方法用法及代码示例
- Julia Threads.atomic_xor!用法及代码示例
- Julia Threads.atomic_and!用法及代码示例
- Julia Threads.atomic_max!用法及代码示例
- Julia Threads.atomic_or!用法及代码示例
- Julia Threads.Atomic用法及代码示例
- Julia Threads.atomic_sub!用法及代码示例
- Julia Threads.atomic_nand!用法及代码示例
- Julia Threads.atomic_xchg!用法及代码示例
- Julia Threads.atomic_add!用法及代码示例
- Julia splice!用法及代码示例
- Julia @cfunction用法及代码示例
- Julia LibGit2.count用法及代码示例
- Julia LinearAlgebra.BLAS.dot用法及代码示例
- Julia break用法及代码示例
- Julia sizeof()用法及代码示例
- Julia :<=用法及代码示例
注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Test.@test_logs — Macro。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。