РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
609 of 643 menu

Класс FlaskCliRunner

Класс FlaskCliRunner применяется для тестирования пользовательских CLI-команд, зарегистрированных в приложении Flask. Он изолирует выполнение команды, перехватывает вывод и позволяет проверить результат без запуска отдельного процесса в терминале. Объект создаётся через метод test_cli_runner приложения, который автоматически передаёт в конструктор нужное приложение и настройки.

Основным методом класса является invoke. Первым параметром он принимает объект команды или её имя, а вторым - список аргументов командной строки. Метод возвращает объект Result с атрибутами exit_code, output и exception, по которым проверяют успешность выполнения команды.

Синтаксис

runner = app.test_cli_runner() res = runner.invoke(command, args, input=None)

Пример

Давайте создадим простое приложение с CLI-командой и протестируем её вывод:

from flask import Flask app = Flask(__name__) @app.cli.command('hello') def hello(): print('hello')

Теперь напишем тест, который вызывает эту команду через FlaskCliRunner:

from app import app runner = app.test_cli_runner() res = runner.invoke(args=['hello']) print(res.exit_code) print(res.output)

Результат выполнения кода:

0 "hello\n"

Пример

Давайте передадим аргумент в CLI-команду и проверим её работу:

from flask import Flask import click app = Flask(__name__) @app.cli.command('greet') @click.argument('name') def greet(name): print('hello ' + name)

Теперь вызовем команду с аргументом 'user':

from app import app runner = app.test_cli_runner() res = runner.invoke(args=['greet', 'user']) print(res.exit_code) print(res.output)

Результат выполнения кода:

0 "hello user\n"

Пример

Давайте проверим команду, которая завершается с ошибкой, и посмотрим на код выхода:

from flask import Flask import click app = Flask(__name__) @app.cli.command('fail') def fail(): raise click.ClickException('something wrong')

Теперь вызовем команду fail и проверим exit_code:

from app import app runner = app.test_cli_runner() res = runner.invoke(args=['fail']) print(res.exit_code) print(res.output)

Результат выполнения кода:

1 "Error: something wrong\n"

Смотрите также

  • класс FlaskClient,
    который тестирует HTTP-запросы к приложению
  • метод invoke,
    который запускает CLI-команду в тесте
  • атрибут application,
    который хранит тестируемое приложение
  • класс TestResponse,
    который представляет ответ тестового клиента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить