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

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

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

Vcrpy
- это библиотека для Python (порт популярного инструмента VCR из экосистемы Ruby), которая упрощает и многократно ускоряет тестирование кода, завязанного на сетевые HTTP-запросы.

Вместо того чтобы вручную мокать каждый эндпоинт сторонних API, VCR.py использует концепцию «кассет» (cassettes): при первом запуске теста библиотека перехватывает реальные HTTP-запросы и сериализует их вместе с ответами в локальный YAML-файл. При последующих прогонах реальные сетевые вызовы больше не происходят — VCR.py мгновенно воспроизводит сохраненные ответы из файла.

🔹Главные преимущества:

🔘Максимальная скорость тестов: Запросы отдаются моментально из локального файла, убирая задержки на сетевой round-trip и ответ сервера.

🔘Работа в офлайне: Тестовый сьют можно без проблем прогонять в самолете, поезде или на изолированных CI/CD раннерах без доступа во внешнюю сеть.

🔘100% детерминированность: Тесты перестают быть нестабильными (flaky) из-за проблем с интернетом, превышения лимитов API (rate limits) или временного падения сторонних сервисов.

🔘Простое обновление: Если логика удаленного API изменилась, не нужно переписывать моки вручную — достаточно удалить файл кассеты, и библиотека автоматически запишет свежие данные при следующем прогоне.

🔻Пример использования:

С использованием контекстного менеджера:
import urllib.request
import vcr

# Запросы внутри блока запишутся в файл cassettes/example.yaml
with vcr.use_cassette('cassettes/example.yaml'):
response = urllib.request.urlopen('http://httpbin.org/get').read()
assert b'origin' in response


В виде декоратора:

import vcr
import requests

@vcr.use_cassette('cassettes/users.yaml')
def test_users_api():
response = requests.get('https://api.example.com/users')
assert response.status_code == 200
assert len(response.json()) > 0


Совет для Pytest: Для максимально удобной работы в связке с pytest существует официальный плагин pytest-recording, позволяющий использовать маркер
@pytest.mark.vcr и флаги --record-mode .


📦Установка:
pip install vcrpy


✅Проект распространяется под открытой лицензией MIT.

#Python #Testing #QA #Pytest #VCR #VCRpy #Mocking #API #DevTools #OpenSource #Backend

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