Log message matching¶
logot makes it easy to match log messages using %-style placeholders:
from logot import Logot, logged
def test_something(logot: Logot) -> None:
do_something()
logot.assert_logged(logged.info("Something %s done"))
In this case, the %s placeholder will match any string!
Available placeholders¶
The following placeholders are available, each corresponding to a formatting option from the stdlib logging
module:
Placeholder |
Matches |
|---|---|
|
Signed integer decimal. |
|
Signed integer decimal. |
|
Signed octal value. |
|
Signed integer decimal. |
|
Signed hexadecimal (lowercase). |
|
Signed hexadecimal (uppercase). |
|
Floating point exponential format (lowercase). |
|
Floating point exponential format (uppercase). |
|
Floating point decimal format (lowercase). |
|
Floating point decimal format (uppercase). |
|
Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. |
|
Floating point format. Uses uppercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. |
|
Single character. |
|
Any string (non-greedy). |
|
Any string (non-greedy). |
|
Any string (non-greedy). |
|
Escape sequence, results in a |
Wildcards¶
The special ... (ellipsis) acts as a wildcard when matching log messages.
Use ... to match log records with any message:
from logot import Logot, logged
def test_something(logot: Logot) -> None:
do_something()
logot.assert_logged(logged.info(...))
Or use ... to match log records with any level:
from logot import Logot, logged
def test_something(logot: Logot) -> None:
do_something()
logot.assert_logged(logged.log(..., "Something %s done"))