Coverage for tests / test_tutorial / test_commands / test_help / test_tutorial007.py: 100%
46 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-11-09 00:15 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-11-09 00:15 +0000
1import importlib 1abcdefg
2import os 1abcdefg
3import subprocess 1abcdefg
4import sys 1abcdefg
5from types import ModuleType 1abcdefg
7import pytest 1abcdefg
8from typer.testing import CliRunner 1abcdefg
10runner = CliRunner() 1abcdefg
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
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
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 "create [OPTIONS] {username} [lastname]" in result.output 1abcdefg
40 assert "username" in result.output 1abcdefg
41 assert "The username to create" in result.output 1abcdefg
42 assert "Secondary Arguments" in result.output 1abcdefg
43 assert "lastname" in result.output 1abcdefg
44 assert "The last name of the new user" in result.output 1abcdefg
45 assert "--force" in result.output 1abcdefg
46 assert "--no-force" in result.output 1abcdefg
47 assert "Force the creation of the user" in result.output 1abcdefg
48 assert "Additional Data" in result.output 1abcdefg
49 assert "--age" in result.output 1abcdefg
50 assert "The age of the new user" in result.output 1abcdefg
51 assert "--favorite-color" in result.output 1abcdefg
52 assert "The favorite color of the new user" in result.output 1abcdefg
55def test_call(mod: ModuleType): 1abcdefg
56 # Mainly for coverage
57 result = runner.invoke(mod.app, ["create", "Morty"]) 1abcdefg
58 assert result.exit_code == 0 1abcdefg
59 result = runner.invoke(mod.app, ["config", "Morty"]) 1abcdefg
60 assert result.exit_code == 0 1abcdefg
63def test_script(mod: ModuleType): 1abcdefg
64 result = subprocess.run( 1abcdefg
65 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"],
66 capture_output=True,
67 encoding="utf-8",
68 env={**os.environ, "PYTHONIOENCODING": "utf-8"},
69 )
70 assert "Usage" in result.stdout 1abcdefg