PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Spoof.

Spoof —
это минималистичный и гибкий HTTP-сервер для Python, разработанный специально для изоляции и тестирования сетевого взаимодействия без боли.

Если вам когда-нибудь требовалось переписать клиентскую библиотеку, проверить её поведение в боевых условиях или полноценно замокать сторонний API на реальных сетевых сокетах (а не просто подменить методы в коде), Spoof станет идеальным решением.

🔹Главные фичи инструмента:

🔘Батарейки в комплекте: Написан на базе стандартного модуля http.server, не имеет внешних зависимостей и работает на Python 3.10–3.14.

🔘Динамическая очередь ответов: В отличие от классических серверов, где роуты прописываются заранее, Spoof принимает любые запросы. Он выдает ответы из настроенной FIFO-очереди (.responses) или возвращает .defaultResponse. По умолчанию, если очередь пуста, он честно отдаст 503 Service Unavailable.

🔘Живой лог запросов: Каждый чих со стороны клиента записывается в историю .requests. После тестов можно легко проверить, какие методы, заголовки, query-параметры или JSON-тела прилетали на сервер.

🔘Постквантовая криптография: Из коробки поддерживает SSL/TLS с самоподписанными сертификатами, а если в системе установлен OpenSSL 3.5+, вы можете тестировать соединения с использованием постквантовых алгоритмов (PQC)!

🔘Проксирование и IPv6: Поддерживает прокси-туннелирование через обработку CONNECT-запросов, а также умеет слушать исключительно IPv6-сокеты через класс spoof.http6.

🔘Интерактивный дебаг: Вы можете передать в качестве ответа функцию-колбэк с обычным breakpoint(). При отправке запроса выполнение встанет на паузу, и вы сможете изучить объект request прямо в консоли через Pdb.

❓Как это выглядит в тестах:

import requests
import spoof

# Поднимаем сервер в контекстном менеджере
with spoof.http() as http:
# Задаем цепочку ответов
http.responses.extend([
[200, [("Content-Type", "application/json")], b'{"id": 1111}'],
[200, [("Content-Type", "application/json")], b'{"id": 2222}'],
])
http.defaultResponse = [404, [], "Not found"]

# Проверяем поведение клиента
assert requests.get(http.url + "/users").json() == {"id": 1111}
assert requests.get(http.url + "/posts").json() == {"id": 2222}
assert requests.get(http.url + "/unknown").status_code == 404

# Проверяем историю логов сервера
assert [r.path for r in http.requests] == ["/users", "/posts", "/unknown"]


🔧Установка:

pip install spoof


#Python #Testing #QA #Backend #Mock #HTTPServer #DevTools #OpenSource #WebDevelopment

📱Ссылка на репозиторий:
https://github.com/lexsca/spoof
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍3⚡2