Как протестировать приложения командной строки Python - PullRequest
0 голосов
/ 20 мая 2018

Я создал приложение командной строки python, которое работает в двух режимах:

  1. в интерактивном режиме, где оно открывает интерактивную оболочку с использованием python CMDModule .

    Пример:

    работает plcli в командной строке, открывает интерактивный режим

    (cmd)> do_x

  2. читает команды из входного файла и выполняет их один за другим.

    Пример:

    выполняет plcli input_file.txt в командной строке, выполняет команды построчно и выводитрезультат в стандартный вывод.

Как написать модуль и интеграционный тест для этого приложения Cli.Я исследовал pytest-console-scripts и script-test , но они не кажутся оптимальными или оптимальными.

Пожалуйста, предложите принятые / лучшие практикибиблиотеки или использование для тестирования приложений командной строки python.

Примечание: я не использую никаких python cli Framework, таких как clint или click

1 Ответ

0 голосов
/ 20 мая 2018

Самый важный принцип состоит в том, чтобы организовать ваш код так, чтобы сложность заключалась в функциях (или методах), которые поддаются простому модульному тестированию - другими словами, в функциях, которые не имеют отношения к командной строке или интерактивнымхарактер более широкой программы.Затем приклейте эти функции к тонкому внешнему слою, который обеспечивает командную или интерактивную функциональность.Этот клей, как правило, будет очень простым и, возможно, не стоит того, чтобы его тестировать.Если для этого требуется какое-либо тестирование, вы часто можете сделать это с небольшим количеством базовых сквозных выполнений (например, для сценария командной строки - тест, использующий модуль Python subprocess для запуска вашей программы точно так же, как пользовательБудет)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...