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-02-09 12:36 +0000

1import importlib 1abcdefgh

2import subprocess 1abcdefgh

3import sys 1abcdefgh

4from types import ModuleType 1abcdefgh

5 

6import pytest 1abcdefgh

7from typer.testing import CliRunner 1abcdefgh

8 

9runner = CliRunner() 1abcdefgh

10 

11 

12@pytest.fixture( 1abcdefgh

13 name="mod", 

14 params=[ 

15 pytest.param("tutorial001_py39"), 

16 pytest.param("tutorial001_an_py39"), 

17 ], 

18) 

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

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

21 mod = importlib.import_module(module_name) 1abcdefgh

22 return mod 1abcdefgh

23 

24 

25def test_help(mod: ModuleType): 1abcdefgh

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

27 assert result.exit_code == 0 1abcdefgh

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

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

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

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

32 

33 

34def test_1(mod: ModuleType): 1abcdefgh

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

36 assert result.exit_code == 0 1abcdefgh

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

38 

39 

40def test_option_lastname(mod: ModuleType): 1abcdefgh

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

42 assert result.exit_code == 0 1abcdefgh

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

44 

45 

46def test_formal(mod: ModuleType): 1abcdefgh

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

48 assert result.exit_code == 0 1abcdefgh

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

50 

51 

52def test_script(mod: ModuleType): 1abcdefgh

53 result = subprocess.run( 1abcdefgh

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

55 capture_output=True, 

56 encoding="utf-8", 

57 ) 

58 assert "Usage" in result.stdout 1abcdefgh