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