Coverage for tests / test_tutorial / test_options / test_help / test_tutorial001.py: 100%

34 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-03-26 21:46 +0000

1import importlib 1abcdefg

2import subprocess 1abcdefg

3import sys 1abcdefg

4from types import ModuleType 1abcdefg

5 

6import pytest 1abcdefg

7from typer.testing import CliRunner 1abcdefg

8 

9runner = CliRunner() 1abcdefg

10 

11 

12@pytest.fixture( 1abcdefg

13 name="mod", 

14 params=[ 

15 pytest.param("tutorial001_py310"), 

16 pytest.param("tutorial001_an_py310"), 

17 ], 

18) 

19def get_mod(request: pytest.FixtureRequest) -> ModuleType: 1abcdefg

20 module_name = f"docs_src.options.help.{request.param}" 1abcdefg

21 mod = importlib.import_module(module_name) 1abcdefg

22 return mod 1abcdefg

23 

24 

25def test_help(mod: ModuleType): 1abcdefg

26 result = runner.invoke(mod.app, ["--help"]) 1abcdefg

27 assert result.exit_code == 0 1abcdefg

28 assert "Say hi to NAME, optionally with a --lastname." in result.output 1abcdefg

29 assert "If --formal is used, say hi very formally." in result.output 1abcdefg

30 assert "Last name of person to greet." in result.output 1abcdefg

31 assert "Say hi formally." in result.output 1abcdefg

32 

33 

34def test_1(mod: ModuleType): 1abcdefg

35 result = runner.invoke(mod.app, ["Camila"]) 1abcdefg

36 assert result.exit_code == 0 1abcdefg

37 assert "Hello Camila" in result.output 1abcdefg

38 

39 

40def test_option_lastname(mod: ModuleType): 1abcdefg

41 result = runner.invoke(mod.app, ["Camila", "--lastname", "Gutiérrez"]) 1abcdefg

42 assert result.exit_code == 0 1abcdefg

43 assert "Hello Camila Gutiérrez" in result.output 1abcdefg

44 

45 

46def test_formal(mod: ModuleType): 1abcdefg

47 result = runner.invoke(mod.app, ["Camila", "--lastname", "Gutiérrez", "--formal"]) 1abcdefg

48 assert result.exit_code == 0 1abcdefg

49 assert "Good day Ms. Camila Gutiérrez." in result.output 1abcdefg

50 

51 

52def test_script(mod: ModuleType): 1abcdefg

53 result = subprocess.run( 1abcdefg

54 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"], 

55 capture_output=True, 

56 encoding="utf-8", 

57 ) 

58 assert "Usage" in result.stdout 1abcdefg