- Добавлен console_commands/admin.py — CLI-скрипт с командами pogoda, news, cat, morning, help - Добавлен docstring к методу pg (отображается в !hp) - Обновлён README.md: архитектура, администрирование в Docker, тесты - Добавлены тесты test_admin.py (5 тестов) - Итого тестов: 223
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
"""Тесты для admin.py — управление через docker exec."""
|
||
import subprocess
|
||
import sys
|
||
|
||
import pytest
|
||
|
||
ADMIN_SCRIPT = "console_commands/admin.py"
|
||
|
||
|
||
class TestAdminHelp:
|
||
"""Тесты команды help."""
|
||
|
||
def test_help_shows_commands(self, capfd):
|
||
"""Команда help выводит список команд."""
|
||
result = subprocess.run(
|
||
[sys.executable, ADMIN_SCRIPT, "help"],
|
||
capture_output=True,
|
||
text=True,
|
||
)
|
||
assert result.returncode == 0
|
||
output = result.stdout
|
||
assert "pogoda" in output
|
||
assert "news" in output
|
||
assert "cat" in output
|
||
assert "morning" in output
|
||
assert "help" in output
|
||
|
||
def test_no_args_shows_help(self, capfd):
|
||
"""Без аргументов выводит help и завершается с кодом 1."""
|
||
result = subprocess.run(
|
||
[sys.executable, ADMIN_SCRIPT],
|
||
capture_output=True,
|
||
text=True,
|
||
)
|
||
assert result.returncode == 1
|
||
assert "pogoda" in result.stdout
|
||
|
||
def test_unknown_command(self, capfd):
|
||
"""Неизвестная команда завершается с кодом 1."""
|
||
result = subprocess.run(
|
||
[sys.executable, ADMIN_SCRIPT, "unknown"],
|
||
capture_output=True,
|
||
text=True,
|
||
)
|
||
assert result.returncode == 1
|
||
assert "unknown" in result.stdout.lower()
|
||
|
||
|
||
class TestAdminImport:
|
||
"""Тесты импорта модуля."""
|
||
|
||
def test_admin_module_imports(self):
|
||
"""Модуль admin импортируется без ошибок."""
|
||
from console_commands import admin
|
||
|
||
assert hasattr(admin, "main")
|
||
assert hasattr(admin, "COMMANDS")
|
||
assert len(admin.COMMANDS) == 5
|
||
|
||
def test_commands_mapping(self):
|
||
"""Все команды зарегистрированы в маппинге."""
|
||
from console_commands.admin import COMMANDS
|
||
|
||
expected = {"pogoda", "news", "cat", "morning", "help"}
|
||
assert set(COMMANDS.keys()) == expected
|