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
« 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
5import pytest 1abcdefghi
6from sqlalchemy import Engine 1abcdefghi
8from ...conftest import PrintMock 1abcdefghi
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]
28@dataclass 1abcdefghi
29class Modules: 1abcdefghi
30 app: ModuleType 1abcdefghi
31 database: ModuleType 1abcdefghi
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
50 return Modules(app=app_module, database=database_module) 1abcdefghi
53def test_tutorial(print_mock: PrintMock, modules: Modules): 1abcdefghi
54 modules.app.main() 1jklmnopqr
55 assert print_mock.calls == expected_calls 1jklmnopqr