Using with trio¶
Use Logot.await_for() to pause your test until the expected logs arrive or the timeout expires:
from logot import Logot, logged
async def test_app(logot: Logot) -> None:
async with trio.open_nursery() as nursery:
nursery.start_soon(app.start())
await logot.await_for(logged.info("App started"))
Note
Use the timeout argument to Logot.await_for() to configure how long to wait before the test fails. This can
be configured globally with the timeout argument to Logot, defaulting to Logot.DEFAULT_TIMEOUT.
See also
See Log pattern matching for examples of how to wait for logs that may arrive in an unpredictable order.
Installing¶
Ensure logot is installed alongside a compatible trio version by adding the trio extra:
pip install 'logot[trio]'
See also
See Installing package extras usage guide.
Enabling for pytest¶
Enable trio support in your pytest configuration:
# pytest.ini or .pytest.ini
[pytest]
logot_async_waiter = logot.trio.TrioWaiter
# pyproject.toml
[tool.pytest.ini_options]
logot_async_waiter = "logot.trio.TrioWaiter"
See also
See Using with pytest usage guide.
Enabling for unittest¶
Enable trio support in your logot.unittest.LogotTestCase:
from logot.trio import TrioWaiter
class MyAppTest(LogotTestCase):
logot_async_waiter = TrioWaiter
See also
See Using with unittest usage guide.
Enabling manually¶
Enable trio support for your Logot instance:
from logot.trio import TrioWaiter
logot = Logot(async_waiter=TrioWaiter)
Enable trio support for a single Logot.await_for() call:
await logot.await_for(logged.info("App started"), async_waiter=TrioWaiter)
See also
See Logot and Logot.await_for() API reference.