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

1import importlib 1abcdefghi

2from types import ModuleType 1abcdefghi

3 

4import pytest 1abcdefghi

5from sqlalchemy import Engine 1abcdefghi

6 

7from ...conftest import PrintMock 1abcdefghi

8 

9 

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

20 

21 

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