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

Класс TestClient

Класс TestClient применяется для тестирования приложения FastAPI. Первым параметром передаётся экземпляр приложения app. Клиент использует библиотеку httpx под капотом и позволяет вызывать методы get, post, put, patch, delete и другие. Вторым параметром можно передать base_url, по умолчанию используется 'http://testserver'. Также можно указать headers, cookies, follow_redirects и другие параметры.

Синтаксис

from fastapi.testclient import TestClient client = TestClient(app, base_url='http://testserver')

Пример

Давайте создадим приложение FastAPI и протестируем корневой маршрут:

from fastapi import FastAPI from fastapi.testclient import TestClient app = FastAPI() @app.get('/') def index(): return {'text': 'hello'} client = TestClient(app) res = client.get('/') print(res.status_code) print(res.json())

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

200 {'text': 'hello'}

Пример

Давайте отправим POST-запрос с данными и проверим ответ:

from fastapi import FastAPI from fastapi.testclient import TestClient app = FastAPI() @app.post('/user') def create_user(name: str): return {'name': name} client = TestClient(app) res = client.post('/user', json={'name': 'abcde'}) print(res.status_code) print(res.json())

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

200 {'name': 'abcde'}

Пример

Давайте проверим заголовки и cookies ответа:

from fastapi import FastAPI, Response from fastapi.testclient import TestClient app = FastAPI() @app.get('/set') def set_data(response: Response): response.set_cookie('user', 'abcde') response.headers['X-Custom'] = 'hello' return {'text': 'article'} client = TestClient(app) res = client.get('/set') print(res.headers['X-Custom']) print(res.cookies['user'])

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

hello abcde

Пример

Давайте проверим работу с параметрами URL и query-параметрами:

from fastapi import FastAPI from fastapi.testclient import TestClient app = FastAPI() @app.get('/user/{name}') def user(name: str, age: int = 0): return {'name': name, 'age': age} client = TestClient(app) res = client.get('/user/abcde?age=25') print(res.status_code) print(res.json())

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

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

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

  • метод get,
    который отправляет GET-запрос через TestClient
  • метод post,
    который отправляет POST-запрос через TestClient
  • атрибут app,
    который хранит тестируемое приложение FastAPI
  • атрибут headers,
    который задаёт заголовки по умолчанию для запросов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить