用法:
@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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。