Coverage for tests / test_tutorial / test_limit_and_offset / test_tutorial004.py: 100%
20 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-11-09 00:02 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-11-09 00:02 +0000
1import importlib 1abcdefghi
2from types import ModuleType 1abcdefghi
4import pytest 1abcdefghi
5from sqlalchemy import Engine 1abcdefghi
7from ...conftest import PrintMock 1abcdefghi
10@pytest.fixture( 1abcdefghi
11 name="mod",
12 params=[
13 pytest.param("tutorial004_py310"),
14 ],
15)
16def get_module(request: pytest.FixtureRequest, database_engine: Engine) -> ModuleType: 1abcdefghi
17 mod = importlib.import_module(f"docs_src.tutorial.offset_and_limit.{request.param}") 1abcdefghi
18 mod.engine = database_engine 1abcdefghi
19 return mod 1abcdefghi
22def test_tutorial(print_mock: PrintMock, mod: ModuleType): 1abcdefghi
23 mod.main() 1jklmnopqr
24 assert len(print_mock.calls) == 1 1jklmnopqr
25 assert len(print_mock.calls[0]) == 1 1jklmnopqr
26 heroes = print_mock.calls[0][0] 1jklmnopqr
27 assert len(heroes) == 2 1jklmnopqr
28 assert len({hero["id"] for hero in heroes}) == 2 1jklmnopqr
29 # Without ORDER BY, the database determines which matching heroes are returned.
30 expected_heroes = [ 1jklmnopqr
31 {"name": "Rusty-Man", "secret_name": "Tommy Sharp", "age": 48, "id": 3},
32 {"name": "Black Lion", "secret_name": "Trevor Challa", "age": 35, "id": 5},
33 {"name": "Dr. Weird", "secret_name": "Steve Weird", "age": 36, "id": 6},
34 {
35 "name": "Captain North America",
36 "secret_name": "Esteban Rogelios",
37 "age": 93,
38 "id": 7,
39 },
40 ]
41 for hero in heroes: 1jklmnopqr
42 assert hero in expected_heroes 1jklmnopqr