У меня есть приложение CLI, которое использует сгруппированные команды и подкоманды. Все работает. Однако я хочу убедиться, что это будет продолжаться и в будущем, поэтому я хочу убедиться, что все мои команды и подкоманды были загружены правильно.
Моей первой мыслью сделать это было просто запустить
commands = ["config", "othercommand"]
runner = CliRunner()
result = runner.invoke(cli.main)
for command in commands:
assert command in result.output
Это несколько ловушек, с моей точки зрения.
- Требуется, чтобы я обновлял
commands
каждый раз, когда добавляю новый. Я хотел бы иметь возможность автоматически генерировать это.
- Если у меня есть команда, которая является относительно распространенным словом, которое появляется в справочном тесте (т. Е.
config
), я могу получить неверный результат.
- Я не знаю, как бы я элегантно обрабатывал подкоманды каждого из них.
Мое приложение выложено так:
@click.group()
def main():
"""My entry point"""
@click.group()
def config():
"""config group"""
@config.command()
def add_config():
"""this is a subcommand to config"""
@click.group()
def othercommand():
"""othercommand group"""
@othercommand.command()
def do_thing():
"""this is a subcommand to othercommand"""
Мой вопрос: есть ли способ получить список всех команд (и подкоманд), которые я могу использовать, и сделать это из моего набора тестов? Желательно без всякого окружающего теста помощи, чтобы я мог устранить ложные результаты.