Coverage for tests / test_tutorial / test_select / test_tutorial001_tutorial002.py: 100%

24 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

3from typing import Any, Union 1abcdefghi

4 

5import pytest 1abcdefghi

6from sqlmodel import create_engine 1abcdefghi

7 

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

9 

10 

11def check_calls(calls: list[list[Union[str, dict[str, Any]]]]): 1abcdefghi

12 assert calls[0][0] == { 1jklmnopqrstuvwxyzA

13 "name": "Deadpond", 

14 "secret_name": "Dive Wilson", 

15 "age": None, 

16 "id": 1, 

17 } 

18 assert calls[1][0] == { 1jklmnopqrstuvwxyzA

19 "name": "Spider-Boy", 

20 "secret_name": "Pedro Parqueador", 

21 "age": None, 

22 "id": 2, 

23 } 

24 assert calls[2][0] == { 1jklmnopqrstuvwxyzA

25 "name": "Rusty-Man", 

26 "secret_name": "Tommy Sharp", 

27 "age": 48, 

28 "id": 3, 

29 } 

30 

31 

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

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

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

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

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

37 return module 1abcdefghi

38 

39 

40@pytest.mark.parametrize( 1abcdefghi

41 "module", 

42 [ 

43 pytest.param("tutorial001_py39"), 

44 pytest.param("tutorial001_py310", marks=needs_py310), 

45 ], 

46 indirect=True, 

47) 

48def test_tutorial_001(print_mock: PrintMock, module: ModuleType): 1abcdefghi

49 module.main() 1jlnprtvxz

50 check_calls(print_mock.calls) 1jlnprtvxz

51 

52 

53@pytest.mark.parametrize( 1abcdefghi

54 "module", 

55 [ 

56 pytest.param("tutorial002_py39"), 

57 pytest.param("tutorial002_py310", marks=needs_py310), 

58 ], 

59 indirect=True, 

60) 

61def test_tutorial_002(print_mock: PrintMock, module: ModuleType): 1abcdefghi

62 module.main() 1kmoqsuwyA

63 check_calls(print_mock.calls) 1kmoqsuwyA