mockly-testcontainers
Run Mockly in Docker-backed Python tests with testcontainers-python.
The package starts ghcr.io/dever-labs/mockly:latest, waits for the management API to be ready, and provides helpers for mocks, scenarios, faults, and logs.
Requirements
- Python 3.10+
- Docker
Install
pip install mockly-testcontainers
Quickstart
import urllib.request
from mockly_testcontainers import Mock, MockRequest, MockResponse, MocklyContainer
with MocklyContainer() as container:
container.add_mock(
Mock(
id="get-user",
request=MockRequest(method="GET", path="/users/1"),
response=MockResponse(status=200, body='{"id":1}'),
)
)
with urllib.request.urlopen(f"{container.get_http_base()}/users/1") as response:
assert response.status == 200
assert response.read().decode() == '{"id":1}'
When to use the testcontainers module
Use mockly-testcontainers when you want Docker-managed lifecycle, no native binary download, or the same Mockly image in local tests and CI.
Use mockly-driver when you want to run the native Mockly binary directly from Python.
Construction and configuration
MocklyContainer extends testcontainers.core.container.DockerContainer.
| API | Description |
|---|---|
MocklyContainer(image=DEFAULT_IMAGE) |
Create a container using the default Mockly image, or override it with another image name. |
with_inline_config(yaml) |
Replace /config/mockly.yaml with inline YAML before startup. |
start() |
Start the container and wait for the management API. |
stop() |
Stop the container and clean up the generated config file. |
Custom YAML config
with MocklyContainer().with_inline_config("""mockly:
api:
port: 9091
protocols:
http:
enabled: true
port: 8090
""") as container:
...
Management methods
| Method | Description |
|---|---|
get_http_base() |
Base URL of the mock HTTP server. |
get_api_base() |
Base URL of the management API. |
add_mock(mock) |
Register a dynamic HTTP mock. |
delete_mock(mock_id) |
Delete a mock by ID. |
reset() |
Remove dynamic mocks, deactivate scenarios, and clear faults. |
activate_scenario(scenario_id) |
Activate a configured scenario. |
deactivate_scenario(scenario_id) |
Deactivate a configured scenario. |
set_fault(config) |
Apply a global HTTP fault. |
clear_fault() |
Remove the active fault. |
get_logs() |
Read request logs as JSON. |
clear_logs() |
Clear stored request logs. |
Exported types
The package exports these dataclasses:
MockMockRequestMockResponseFaultConfig
Metadata
Release files for mockly-testcontainers 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mockly_testcontainers-0.15.0.tar.gz | 8.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mockly_testcontainers-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.2 kB
Release files / mockly_testcontainers-0.15.0.tar.gz
| Download URL | mockly_testcontainers-0.15.0.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f7a25b7931041bdc6ff6e63e61cbbabc22685ebbdc8aac03452d58e994bed5ec
|
|
BLAKE2b-256 checksum How to use checksums |
1ccf39ed72836316c0362ed11663f6936d99806dba26cdb0451b2c043bfcc649
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / mockly_testcontainers-0.15.0-py3-none-any.whl
| Download URL | mockly_testcontainers-0.15.0-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
319ded23adbf019d98cd89b13eb48ff4dcbcdbe1c4b2009f570b38cdf6f75858
|
|
BLAKE2b-256 checksum How to use checksums |
4d81450692c1176ad72119b558b7619a16ce564e968d8c994770de3f0c59d99d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|