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

Атрибут json класса TestResponse

Атрибут json применяется к объекту ответа TestResponse, который возвращается тестовым клиентом Flask при выполнении запроса. Он содержит данные ответа, уже преобразованные из JSON-строки в объекты Python: словари, списки, числа, строки, булевы значения и None. Если ответ не содержит валидного JSON, атрибут возвращает None.

Атрибут json доступен только для чтения. Он удобен при тестировании REST-эндпоинтов, когда нужно проверить структуру и значения JSON-ответа без ручного вызова json.loads.

Синтаксис

res.json

Пример

Давайте создадим простое Flask-приложение с эндпоинтом, возвращающим JSON:

from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/data') def data(): return jsonify({'name': 'abcde', 'age': 25})

Теперь напишем тест, который обращается к этому эндпоинту и читает атрибут json:

from app import app client = app.test_client() res = client.get('/api/data') print(res.json)

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

{'name': 'abcde', 'age': 25}

Пример

Давайте обратимся к конкретному ключу в распарсенном JSON:

from app import app client = app.test_client() res = client.get('/api/data') print(res.json['name'])

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

"abcde"

Пример

Давайте создадим эндпоинт, возвращающий JSON-массив:

from flask import Flask, jsonify app = Flask(__name__) @app.route('/api/list') def list_data(): return jsonify(['a', 'b', 'c', 'd', 'e'])

Проверим содержимое массива через атрибут json:

from app import app client = app.test_client() res = client.get('/api/list') print(res.json) print(res.json[2])

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

['a', 'b', 'c', 'd', 'e'] "c"

Пример

Если ответ не является JSON, атрибут json вернёт None. Давайте убедимся в этом:

from flask import Flask app = Flask(__name__) @app.route('/plain') def plain(): return 'hello'

Проверим атрибут json для такого ответа:

from app import app client = app.test_client() res = client.get('/plain') print(res.json)

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

None

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

  • класс TestResponse,
    который представляет ответ тестового клиента
  • метод get_json,
    который возвращает JSON-данные с дополнительными опциями
  • атрибут data,
    который содержит тело ответа в виде байтов
  • атрибут content_type,
    который хранит MIME-тип ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить