Opinionated Python wrapper & utils for the Mountebank over the wire test double tool.
Includes pytest fixture and PyHamcrest matchers.
Install with pip:
pip install mbtest
(As usual, use of a venv or virtualenv is recommended.) Also requires Mountebank to have been installed:
npm install [email protected] --production
import requests
from hamcrest import assert_that, is_
from brunns.matchers.response import response_with
from mbtest.matchers import had_request
from mbtest.imposters import Imposter, Predicate, Response, Stub
def test_request_to_mock_server(mock_server):
# Set up mock server with required behavior
imposter = Imposter(Stub(Predicate(path="/test"),
Response(body="sausages")))
with mock_server(imposter) as server:
# Make request to mock server - exercise code under test here
response = requests.get("{}/test".format(imposter.url))
assert_that("We got the expected response",
response, is_(response_with(status_code=200, body="sausages")))
assert_that("The mock server recorded the request",
server, had_request(path="/test", method="GET"))
Needs a pytest fixture, most easily defined in conftest.py
:
import pytest
from mbtest import server
@pytest.fixture(scope="session")
def mock_server(request):
return server.mock_server(request)
Examples of more complex predicates can be found in the integration tests.
Requires make and tox. Run make precommit
tells you if you're OK to commit. For more options, run:
make help
Requires hub, setuptools and twine. To release n.n.n
:
version="n.n.n" # Needs to match new version number in setup.py.
make precommit && git commit -am"Release $version" && git push # If not already all pushed, which it should be.
hub release create $version -m"Release $version"
python setup.py sdist bdist_wheel
twine upload dist/*$version*