Simplify working with Hoverfly from pytest
Project description
A helper for working with Hoverfly from pytest
.
Installation
pip install pytest-hoverfly
or
poetry add pytest-hoverfly --dev
Usage
There are two use cases: to record a new test and to use recordings.
Prerequisites
Create a directory to store simulation files. Pass --hoverfly-simulation-path
option
when calling pytest
. The path may be absolute or relative to your pytest.ini
file.
E.g. if you have a structure like this:
├── myproject
├── ...
├── pytest.ini
└── tests
├── conftest.py
├── simulations
Then put this in you pytest.ini:
[pytest]
addopts =
--hoverfly-simulation-path=tests/simulations
How to record a test
from pytest_hoverfly import hoverfly
import requests
@hoverfly('my-simulation-file', record=True)
def test_google_with_hoverfly():
assert requests.get('https://google.com').status_code == 200
Write a test. Decorate it with @hoverfly
, specifying a name of a file to save the simulation to.
Run the test. A Hoverfly container will be created, and HTTP_PROXY
and HTTPS_PROXY
env vars
will be set to point to this container. After test finishes, the resulting simulation will
be exported from Hoverfly and saved to a file you specified. After test session ends, Hoverfly
container will be destroyed (unless --hoverfly-reuse-container
is passed to pytest).
This will work for cases when a server always returns the same response for the same
request. If you need to work with stateful endpoints (e.g. wait for Teamcity build
to finish), use @hoverfly('my-simulation, record=True, stateful=True)
. See
Hoverfly docs
for details.
How to use recordings
Remove record
parameter. That's it. When you run the test, it will create a container
with Hoverfly, upload your simulation into it, and use it instead of a real service.
from pytest_hoverfly import hoverfly
import requests
@hoverfly('my-simulation-file')
def test_google_with_hoverfly():
assert requests.get('https://google.com').status_code == 200
Caveat: if you're using an HTTP library other than aiohttp
or requests
you need to
tell it to use Hoverfly as HTTP(S) proxy and to trust Hoverfly's certificate. See
_patch_env
fixture for details on how it's done for aiohttp
and requests
.
How to re-record a test
Add record=True
again, and run the test. The simulation file will be overwritten.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_hoverfly-4.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7dc48bd7c381170758eee99b9fc3d4475bedc0acd5c4e7dcc28130151cb40881 |
|
MD5 | 520f05a9633a24a0563ef95adbd4c52f |
|
BLAKE2b-256 | 6cb5cffbf2df443842b9e8d2114ca037137fa4542f08fedf5dcd031d77fbb730 |