Coverage for tests / test_tutorial / test_commands / test_help / test_tutorial005.py: 100%

47 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-02-09 12:36 +0000

1import importlib 1abcdefgh

2import os 1abcdefgh

3import subprocess 1abcdefgh

4import sys 1abcdefgh

5from types import ModuleType 1abcdefgh

6 

7import pytest 1abcdefgh

8from typer.testing import CliRunner 1abcdefgh

9 

10runner = CliRunner() 1abcdefgh

11 

12 

13@pytest.fixture( 1abcdefgh

14 name="mod", 

15 params=[ 

16 pytest.param("tutorial005_py39"), 

17 pytest.param("tutorial005_an_py39"), 

18 ], 

19) 

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

21 module_name = f"docs_src.commands.help.{request.param}" 1abcdefgh

22 mod = importlib.import_module(module_name) 1abcdefgh

23 return mod 1abcdefgh

24 

25 

26def test_help(mod: ModuleType): 1abcdefgh

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

28 assert result.exit_code == 0 1abcdefgh

29 assert "create" in result.output 1abcdefgh

30 assert "Create a new shiny user. ✨" in result.output 1abcdefgh

31 assert "delete" in result.output 1abcdefgh

32 assert "Delete a user with USERNAME." in result.output 1abcdefgh

33 assert "Some internal utility function to create." not in result.output 1abcdefgh

34 assert "Some internal utility function to delete." not in result.output 1abcdefgh

35 

36 

37def test_help_create(mod: ModuleType): 1abcdefgh

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

39 assert result.exit_code == 0 1abcdefgh

40 assert "Create a new shiny user. ✨" in result.output 1abcdefgh

41 assert "The username to be created" in result.output 1abcdefgh

42 assert "Learn more at the Typer docs website" in result.output 1abcdefgh

43 assert "Some internal utility function to create." not in result.output 1abcdefgh

44 

45 

46def test_help_delete(mod: ModuleType): 1abcdefgh

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

48 assert result.exit_code == 0 1abcdefgh

49 assert "Delete a user with USERNAME." in result.output 1abcdefgh

50 assert "The username to be deleted" in result.output 1abcdefgh

51 assert "Force the deletion 💥" in result.output 1abcdefgh

52 assert "Some internal utility function to delete." not in result.output 1abcdefgh

53 

54 

55def test_create(mod: ModuleType): 1abcdefgh

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

57 assert result.exit_code == 0 1abcdefgh

58 assert "Creating user: Camila" in result.output 1abcdefgh

59 

60 

61def test_delete(mod: ModuleType): 1abcdefgh

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

63 assert result.exit_code == 0 1abcdefgh

64 assert "Deleting user: Camila" in result.output 1abcdefgh

65 

66 

67def test_script(mod: ModuleType): 1abcdefgh

68 result = subprocess.run( 1abcdefgh

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

70 capture_output=True, 

71 encoding="utf-8", 

72 env={**os.environ, "PYTHONIOENCODING": "utf-8"}, 

73 ) 

74 assert "Usage" in result.stdout 1abcdefgh