Coverage for tests / test_tutorial / test_insert / test_tutorial003.py: 100%

31 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-01-06 21:09 +0000

1import importlib 1jklmnopqr

2from types import ModuleType 1jklmnopqr

3 

4import pytest 1jklmnopqr

5from sqlmodel import Session, create_engine, select 1jklmnopqr

6 

7from ...conftest import needs_py310 1jklmnopqr

8 

9 

10@pytest.fixture( 1jklmnopqr

11 name="mod", 

12 params=[ 

13 pytest.param("tutorial003_py39"), 

14 pytest.param("tutorial003_py310", marks=needs_py310), 

15 ], 

16) 

17def get_module(request: pytest.FixtureRequest) -> ModuleType: 1jklmnopqr

18 mod = importlib.import_module(f"docs_src.tutorial.insert.{request.param}") 1jklmnopqr

19 mod.sqlite_url = "sqlite://" 1jklmnopqr

20 mod.engine = create_engine(mod.sqlite_url) 1jklmnopqr

21 return mod 1jklmnopqr

22 

23 

24def test_tutorial(mod: ModuleType): 1jklmnopqr

25 mod.main() 1abcdefghi

26 with Session(mod.engine) as session: 1abcdefghi

27 heroes = session.exec(select(mod.Hero)).all() 1abcdefghi

28 heroes_by_name = {hero.name: hero for hero in heroes} 1abcdefghi

29 deadpond = heroes_by_name["Deadpond"] 1abcdefghi

30 spider_boy = heroes_by_name["Spider-Boy"] 1abcdefghi

31 rusty_man = heroes_by_name["Rusty-Man"] 1abcdefghi

32 assert deadpond.name == "Deadpond" 1abcdefghi

33 assert deadpond.age is None 1abcdefghi

34 assert deadpond.id is not None 1abcdefghi

35 assert deadpond.secret_name == "Dive Wilson" 1abcdefghi

36 assert spider_boy.name == "Spider-Boy" 1abcdefghi

37 assert spider_boy.age is None 1abcdefghi

38 assert spider_boy.id is not None 1abcdefghi

39 assert spider_boy.secret_name == "Pedro Parqueador" 1abcdefghi

40 assert rusty_man.name == "Rusty-Man" 1abcdefghi

41 assert rusty_man.age == 48 1abcdefghi

42 assert rusty_man.id is not None 1abcdefghi

43 assert rusty_man.secret_name == "Tommy Sharp" 1abcdefghi