Класс TestResponse
Класс TestResponse используется в тестировании приложений Flask. Он наследуется от класса Response и предоставляет дополнительные методы и атрибуты, упрощающие проверку результатов запросов. Объект этого класса возвращается при вызове методов тестового клиента, таких как get, post и других. Класс позволяет получить доступ к данным ответа, заголовкам, статусу и cookies.
Синтаксис
response = client.get('/path')
Пример
Давайте создадим простое приложение и протестируем его с помощью тестового клиента:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello'
Теперь напишем тест, который использует TestResponse:
from app import app
def test_index():
client = app.test_client()
res = client.get('/')
assert res.status_code == 200
assert res.data == b'hello'
Результат выполнения кода:
"OK"
Пример
Давайте проверим ответ в формате JSON. Создадим маршрут, возвращающий JSON:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api')
def api():
return jsonify({'name': 'user', 'age': 25})
Теперь напишем тест, который проверяет JSON-ответ:
from app import app
def test_api():
client = app.test_client()
res = client.get('/api')
assert res.status_code == 200
assert res.json == {'name': 'user', 'age': 25}
Результат выполнения кода:
"OK"
Пример
Давайте проверим заголовки ответа и тип контента:
from app import app
def test_headers():
client = app.test_client()
res = client.get('/')
assert res.content_type == 'text/html; charset=utf-8'
assert 'Content-Type' in res.headers
Результат выполнения кода:
"OK"
Смотрите также
-
класс
TestClient,
который создаёт тестовый клиент для запросов -
метод
get,
который выполняет GET-запрос к приложению -
метод
get_data,
который возвращает тело ответа в виде строки -
атрибут
status_code,
который содержит HTTP-статус ответа