Coverage for tests / test_tutorial / test_one / test_tutorial005.py: 100%
25 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
6from sqlalchemy.exc import NoResultFound 1abcdefghi
7from sqlmodel import Session, delete 1abcdefghi
9from ...conftest import PrintMock 1abcdefghi
12@pytest.fixture( 1abcdefghi
13 name="mod",
14 params=[
15 pytest.param("tutorial005_py310"),
16 ],
17)
18def get_module(request: pytest.FixtureRequest, database_engine: Engine) -> ModuleType: 1abcdefghi
19 mod = importlib.import_module(f"docs_src.tutorial.one.{request.param}") 1abcdefghi
20 mod.engine = database_engine 1abcdefghi
21 return mod 1abcdefghi
24def test_tutorial(print_mock: PrintMock, mod: ModuleType): 1abcdefghi
25 with pytest.raises(NoResultFound): 1jklmnopqr
26 mod.main() 1jklmnopqr
27 with Session(mod.engine) as session: 1jklmnopqr
28 # TODO: create delete() function
29 # TODO: add overloads for .exec() with delete object
30 session.exec(delete(mod.Hero)) 1jklmnopqr
31 hero = mod.Hero(name="Test Hero", secret_name="Secret Test Hero", age=24) 1jklmnopqr
32 session.add(hero) 1jklmnopqr
33 session.commit() 1jklmnopqr
34 session.refresh(hero) 1jklmnopqr
35 hero_id = hero.id 1jklmnopqr
36 assert hero_id is not None 1jklmnopqr
38 mod.select_heroes() 1jklmnopqr
39 assert print_mock.calls == [ 1jklmnopqr
40 [
41 "Hero:",
42 {
43 "id": hero_id,
44 "name": "Test Hero",
45 "secret_name": "Secret Test Hero",
46 "age": 24,
47 },
48 ]
49 ]