Pytest plugin providing Arrakis fixtures for testing
Project description
pytest-arrakis
Pytest plugin providing Arrakis fixtures for testing
Resources
Installation
pip install pytest-arrakis
To enable publish fixtures (including a real Kafka-backed server), install the publish extra:
pip install pytest-arrakis[publish]
Fixtures
Core fixtures
These are available out of the box:
| Fixture | Scope | Description |
|---|---|---|
arrakis_channel_configs |
session | List of paths to the bundled per-publisher config files |
arrakis_backend |
session | A MockBackend configured with the bundled test channels |
arrakis_server |
session | A running mock ArrakisFlightServer (sets ARRAKIS_SERVER env var) |
arrakis_channels |
session | Dict of channel metadata loaded from the bundled TOML |
arrakis_mock_publisher |
function | A mocked Publisher with FakeProducer for sink testing (no server/broker needed) |
Publish fixtures (requires publish extra)
These are conditionally registered when arrakis-backend-kafka and pytest-kafka-broker are installed:
| Fixture | Scope | Description |
|---|---|---|
arrakis_publish_backend |
function | A real KafkaBackend pointed at an embedded Kafka broker |
arrakis_publish_server |
function | A publish-capable ArrakisFlightServer backed by Kafka |
arrakis_publisher |
function | A real Publisher registered against the embedded broker |
Usage
Fetching data from a mock server
def test_fetch(arrakis_server):
import arrakis
block = arrakis.fetch(["H1:TEST-CHANNEL_SIN"], 0, 1)
for channel, series in block.items():
assert len(series) > 0
Testing a publisher without a real broker
def test_publish(arrakis_mock_publisher):
publisher, fake_producer, published_blocks = arrakis_mock_publisher
# publish a block through your code under test ...
assert len(published_blocks) == 1
End-to-end publish testing (requires publish extra)
def test_roundtrip(arrakis_publisher):
# arrakis_publisher is a real Publisher connected to an embedded Kafka broker
...
Bundled test channels
The plugin ships with a set of test channel definitions:
| Channel | Publisher | Sample Rate | Data Type |
|---|---|---|---|
H1:TEST-CHANNEL_SIN |
FAKE_H1 |
512 | float32 |
H1:TEST-CHANNEL_COS |
FAKE_H1 |
16384 | float64 |
H1:TEST-STATE_ONES |
FAKE_H1 |
16 | int32 |
L1:TEST-NOISE |
FAKE_L1 |
4096 | float32 |
CI setup
GitLab CI
The core fixtures work without any extra system dependencies. However, the
publish extra uses pytest-kafka-broker, which starts an embedded Kafka
broker that requires a JVM at runtime. In Debian/Ubuntu-based CI images
(including the standard python: Docker images), install it in a
before_script:
test:
image: python:3.13
before_script:
- apt-get update && apt-get install -y --no-install-recommends default-jre-headless
If you only use the core fixtures (no publish extra), the JVM is not needed.
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_arrakis-0.2.0.tar.gz.
File metadata
- Download URL: pytest_arrakis-0.2.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.4 cpython/3.13.11 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66771ca4d417f8620ba04f69ceb07484cded726a7ca87378558eaffd25198e0d
|
|
| MD5 |
2aca18eaeaaa308f4bfd323a04f47abe
|
|
| BLAKE2b-256 |
02fad59f381b31de4459dbe65d68be0d519b3830de474613f86b9324c539ffc5
|
File details
Details for the file pytest_arrakis-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pytest_arrakis-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.4 cpython/3.13.11 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dcbc75b569f98ba19f17f6903752e9080fa1de39c8b2ab49f79c3be1fc344db
|
|
| MD5 |
2ca052fa43cb891d3e4f1667c5dd7a6f
|
|
| BLAKE2b-256 |
5b9f248f41988fbc0f04b3676e100f616acfbb18ed10c16dbc401bbae98206d2
|