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

45 statements  

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

1import importlib 1abcdefg

2import os 1abcdefg

3import subprocess 1abcdefg

4import sys 1abcdefg

5from types import ModuleType 1abcdefg

6 

7import pytest 1abcdefg

8from typer.testing import CliRunner 1abcdefg

9 

10runner = CliRunner() 1abcdefg

11 

12 

13@pytest.fixture( 1abcdefg

14 name="mod", 

15 params=[ 

16 pytest.param("tutorial007_py310"), 

17 pytest.param("tutorial007_an_py310"), 

18 ], 

19) 

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

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

22 mod = importlib.import_module(module_name) 1abcdefg

23 return mod 1abcdefg

24 

25 

26def test_main_help(mod: ModuleType): 1abcdefg

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

28 assert result.exit_code == 0 1abcdefg

29 assert "create" in result.output 1abcdefg

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

31 assert "Utils and Configs" in result.output 1abcdefg

32 assert "config" in result.output 1abcdefg

33 assert "Configure the system. ⚙" in result.output 1abcdefg

34 

35 

36def test_create_help(mod: ModuleType): 1abcdefg

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

38 assert result.exit_code == 0 1abcdefg

39 assert "username" in result.output 1abcdefg

40 assert "The username to create" in result.output 1abcdefg

41 assert "Secondary Arguments" in result.output 1abcdefg

42 assert "lastname" in result.output 1abcdefg

43 assert "The last name of the new user" in result.output 1abcdefg

44 assert "--force" in result.output 1abcdefg

45 assert "--no-force" in result.output 1abcdefg

46 assert "Force the creation of the user" in result.output 1abcdefg

47 assert "Additional Data" in result.output 1abcdefg

48 assert "--age" in result.output 1abcdefg

49 assert "The age of the new user" in result.output 1abcdefg

50 assert "--favorite-color" in result.output 1abcdefg

51 assert "The favorite color of the new user" in result.output 1abcdefg

52 

53 

54def test_call(mod: ModuleType): 1abcdefg

55 # Mainly for coverage 

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

57 assert result.exit_code == 0 1abcdefg

58 result = runner.invoke(mod.app, ["config", "Morty"]) 1abcdefg

59 assert result.exit_code == 0 1abcdefg

60 

61 

62def test_script(mod: ModuleType): 1abcdefg

63 result = subprocess.run( 1abcdefg

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

65 capture_output=True, 

66 encoding="utf-8", 

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

68 ) 

69 assert "Usage" in result.stdout 1abcdefg