Coverage for tests / test_tutorial / test_arguments / test_help / test_tutorial004.py: 100%

28 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("tutorial004_py310"), 

16 pytest.param("tutorial004_an_py310"), 

17 ], 

18) 

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

20 module_name = f"docs_src.arguments.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 "[OPTIONS] [NAME]" in result.output 1abcdefg

29 assert "Say hi to NAME very gently, like Dirk." in result.output 1abcdefg

30 assert "Arguments" in result.output 1abcdefg

31 assert "NAME" in result.output 1abcdefg

32 assert "Who to greet" in result.output 1abcdefg

33 assert "[default: World]" not in result.output 1abcdefg

34 

35 

36def test_call_arg(mod: ModuleType): 1abcdefg

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

38 assert result.exit_code == 0 1abcdefg

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

40 

41 

42def test_script(mod: ModuleType): 1abcdefg

43 result = subprocess.run( 1abcdefg

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

45 capture_output=True, 

46 encoding="utf-8", 

47 ) 

48 assert "Usage" in result.stdout 1abcdefg