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
« 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
7import pytest 1abcdefgh
8from typer.testing import CliRunner 1abcdefgh
10runner = CliRunner() 1abcdefgh
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
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
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
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
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
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
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