Coverage for tests / test_tutorial / test_code_structure / test_tutorial002.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-11-09 00:02 +0000

1import importlib 1abcdefghi

2from dataclasses import dataclass 1abcdefghi

3from types import ModuleType 1abcdefghi

4 

5import pytest 1abcdefghi

6from sqlalchemy import Engine 1abcdefghi

7 

8from ...conftest import PrintMock 1abcdefghi

9 

10expected_calls = [ 1abcdefghi

11 [ 

12 "Created hero:", 

13 { 

14 "id": 1, 

15 "name": "Deadpond", 

16 "age": None, 

17 "secret_name": "Dive Wilson", 

18 "team_id": 1, 

19 }, 

20 ], 

21 [ 

22 "Hero's team:", 

23 {"name": "Z-Force", "headquarters": "Sister Margaret's Bar", "id": 1}, 

24 ], 

25] 

26 

27 

28@dataclass 1abcdefghi

29class Modules: 1abcdefghi

30 app: ModuleType 1abcdefghi

31 database: ModuleType 1abcdefghi

32 

33 

34@pytest.fixture( 1abcdefghi

35 name="modules", 

36 params=[ 

37 pytest.param("tutorial002_py310"), 

38 ], 

39) 

40def get_modules(request: pytest.FixtureRequest, database_engine: Engine) -> Modules: 1abcdefghi

41 app_module = importlib.import_module( 1abcdefghi

42 f"docs_src.tutorial.code_structure.{request.param}.app" 

43 ) 

44 database_module = importlib.import_module( 1abcdefghi

45 f"docs_src.tutorial.code_structure.{request.param}.database" 

46 ) 

47 database_module.engine = database_engine 1abcdefghi

48 app_module.engine = database_module.engine 1abcdefghi

49 

50 return Modules(app=app_module, database=database_module) 1abcdefghi

51 

52 

53def test_tutorial(print_mock: PrintMock, modules: Modules): 1abcdefghi

54 modules.app.main() 1jklmnopqr

55 assert print_mock.calls == expected_calls 1jklmnopqr