Coverage for tests/test_tutorial/test_code_structure/test_tutorial001.py: 100%
22 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-27 00:03 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-27 00:03 +0000
1import importlib 1abcdefghij
2from dataclasses import dataclass 1abcdefghij
3from types import ModuleType 1abcdefghij
5import pytest 1abcdefghij
6from sqlmodel import create_engine 1abcdefghij
8from tests.conftest import PrintMock, needs_py39, needs_py310 1abcdefghij
10expected_calls = [ 1abcdefghij
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 1abcdefghij
29class Modules: 1abcdefghij
30 app: ModuleType 1abcdefghij
31 database: ModuleType 1abcdefghij
34@pytest.fixture( 1abcdefghij
35 name="modules",
36 params=[
37 "tutorial001",
38 pytest.param("tutorial001_py39", marks=needs_py39),
39 pytest.param("tutorial001_py310", marks=needs_py310),
40 ],
41)
42def get_modules(request: pytest.FixtureRequest) -> Modules: 1abcdefghij
43 app_module = importlib.import_module( 1abcdefghij
44 f"docs_src.tutorial.code_structure.{request.param}.app"
45 )
46 database_module = importlib.import_module( 1abcdefghij
47 f"docs_src.tutorial.code_structure.{request.param}.database"
48 )
49 database_module.sqlite_url = "sqlite://" 1abcdefghij
50 database_module.engine = create_engine(database_module.sqlite_url) 1abcdefghij
51 app_module.engine = database_module.engine 1abcdefghij
53 return Modules(app=app_module, database=database_module) 1abcdefghij
56def test_tutorial(print_mock: PrintMock, modules: Modules): 1abcdefghij
57 modules.app.main() 1klmnopqrst
58 assert print_mock.calls == expected_calls 1klmnopqrst