Vcrpy - это библиотека для Python (порт популярного инструмента VCR из экосистемы Ruby), которая упрощает и многократно ускоряет тестирование кода, завязанного на сетевые HTTP-запросы.
Вместо того чтобы вручную мокать каждый эндпоинт сторонних API, VCR.py использует концепцию «кассет» (cassettes): при первом запуске теста библиотека перехватывает реальные HTTP-запросы и сериализует их вместе с ответами в локальный YAML-файл. При последующих прогонах реальные сетевые вызовы больше не происходят — VCR.py мгновенно воспроизводит сохраненные ответы из файла.
С использованием контекстного менеджера:
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
#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
GitHub
GitHub - kevin1024/vcrpy: Automatically mock your HTTP interactions to simplify and speed up testing
Automatically mock your HTTP interactions to simplify and speed up testing - kevin1024/vcrpy