Coverage for tests / test_tutorial / test_one / test_tutorial005.py: 100%
21 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
1import importlib 1abcdefghi
2from types import ModuleType 1abcdefghi
4import pytest 1abcdefghi
5from sqlalchemy.exc import NoResultFound 1abcdefghi
6from sqlmodel import Session, create_engine, delete 1abcdefghi
8from ...conftest import PrintMock, needs_py310 1abcdefghi
11@pytest.fixture( 1abcdefghi
12 name="mod",
13 params=[
14 pytest.param("tutorial005_py39"),
15 pytest.param("tutorial005_py310", marks=needs_py310),
16 ],
17)
18def get_module(request: pytest.FixtureRequest) -> ModuleType: 1abcdefghi
19 mod = importlib.import_module(f"docs_src.tutorial.one.{request.param}") 1abcdefghi
20 mod.sqlite_url = "sqlite://" 1abcdefghi
21 mod.engine = create_engine(mod.sqlite_url) 1abcdefghi
22 return mod 1abcdefghi
25def test_tutorial(print_mock: PrintMock, mod: ModuleType): 1abcdefghi
26 with pytest.raises(NoResultFound): 1jklmnopqr
27 mod.main() 1jklmnopqr
28 with Session(mod.engine) as session: 1jklmnopqr
29 # TODO: create delete() function
30 # TODO: add overloads for .exec() with delete object
31 session.exec(delete(mod.Hero)) 1jklmnopqr
32 session.add(mod.Hero(name="Test Hero", secret_name="Secret Test Hero", age=24)) 1jklmnopqr
33 session.commit() 1jklmnopqr
35 mod.select_heroes() 1jklmnopqr
36 assert print_mock.calls == [ 1jklmnopqr
37 [
38 "Hero:",
39 {
40 "id": 1,
41 "name": "Test Hero",
42 "secret_name": "Secret Test Hero",
43 "age": 24,
44 },
45 ]
46 ]