Coverage for tests / test_tutorial / test_update / test_tutorial003_tutorial004.py: 100%

20 statements  

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

1import importlib 1abcdefghi

2from types import ModuleType 1abcdefghi

3 

4import pytest 1abcdefghi

5from sqlmodel import create_engine 1abcdefghi

6 

7from ...conftest import PrintMock, needs_py310 1abcdefghi

8 

9expected_calls = [ 1abcdefghi

10 [ 

11 "Hero 1:", 

12 {"id": 2, "name": "Spider-Boy", "secret_name": "Pedro Parqueador", "age": None}, 

13 ], 

14 [ 

15 "Hero 2:", 

16 { 

17 "id": 7, 

18 "name": "Captain North America", 

19 "secret_name": "Esteban Rogelios", 

20 "age": 93, 

21 }, 

22 ], 

23 [ 

24 "Updated hero 1:", 

25 { 

26 "id": 2, 

27 "name": "Spider-Youngster", 

28 "secret_name": "Pedro Parqueador", 

29 "age": 16, 

30 }, 

31 ], 

32 [ 

33 "Updated hero 2:", 

34 { 

35 "id": 7, 

36 "name": "Captain North America Except Canada", 

37 "secret_name": "Esteban Rogelios", 

38 "age": 110, 

39 }, 

40 ], 

41] 

42 

43 

44@pytest.fixture(name="module") 1abcdefghi

45def get_module(request: pytest.FixtureRequest) -> ModuleType: 1abcdefghi

46 module = importlib.import_module(f"docs_src.tutorial.update.{request.param}") 1abcdefghi

47 module.sqlite_url = "sqlite://" 1abcdefghi

48 module.engine = create_engine(module.sqlite_url) 1abcdefghi

49 return module 1abcdefghi

50 

51 

52@pytest.mark.parametrize( 1abcdefghi

53 "module", 

54 [ 

55 pytest.param("tutorial003_py39"), 

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

57 ], 

58 indirect=True, 

59) 

60def test_tutorial003(print_mock: PrintMock, module: ModuleType): 1abcdefghi

61 module.main() 1jklmnopqr

62 assert print_mock.calls == expected_calls 1jklmnopqr

63 

64 

65@pytest.mark.parametrize( 1abcdefghi

66 "module", 

67 [ 

68 pytest.param("tutorial004_py39"), 

69 pytest.param("tutorial004_py310", marks=needs_py310), 

70 ], 

71 indirect=True, 

72) 

73def test_tutorial004(print_mock: PrintMock, module: ModuleType): 1abcdefghi

74 module.main() 1stuvwxyzA

75 assert print_mock.calls == expected_calls 1stuvwxyzA