Метод invoke
Метод invoke применяется к экземпляру
класса FlaskCliRunner и запускает
CLI-команду приложения Flask в изолированном
режиме. Первым параметром передаётся объект
cli - группа команд приложения. Вторым
параметром передаётся список аргументов
args, которые нужно выполнить. Третьим
необязательным параметром передаётся словарь
input для подстановки значений в
интерактивные запросы. Четвёртым необязательным
параметром передаётся env - словарь
переменных окружения. Метод возвращает объект
Result с атрибутами exit_code,
output и exception.
Синтаксис
runner.invoke(cli, args, input=None, env=None, catch_exceptions=True)
Пример
Давайте определим CLI-команду и вызовем её
в тесте через метод invoke:
from flask import Flask
app = Flask(__name__)
@app.cli.command('hello')
def hello():
print('hello')
from app import app
from flask.testing import FlaskCliRunner
runner = app.test_cli_runner()
res = runner.invoke(args=['hello'])
print(res.output)
Результат выполнения кода:
"hello"
Пример
Давайте проверим код возврата exit_code
после выполнения команды:
from app import app
from flask.testing import FlaskCliRunner
runner = app.test_cli_runner()
res = runner.invoke(args=['hello'])
print(res.exit_code)
Результат выполнения кода:
0
Пример
Давайте передадим значение через параметр
input для интерактивной команды:
from flask import Flask
app = Flask(__name__)
@app.cli.command('ask')
def ask():
name = input('name: ')
print('user ' + name)
from app import app
from flask.testing import FlaskCliRunner
runner = app.test_cli_runner()
res = runner.invoke(args=['ask'], input='abcde\n')
print(res.output)
Результат выполнения кода:
"name: user abcde"
Смотрите также
-
класс
FlaskCliRunner,
который запускает CLI-команды в тестах -
метод
open,
который открывает сессию запроса в тестах -
класс
TestResponse,
который представляет ответ приложения в тестах -
атрибут
status_code,
который хранит код состояния ответа