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.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28d163781979508f6bac3dfbebc356725deab8f9e99d7d2d12fcbabe07e44530 |
|
MD5 | c87ac8b2e4a46668c2cb201723707843 |
|
BLAKE2b-256 | 721127489919c6361e97873447c754f8efa8576fa9b8a28446206709afc1bf3a |