Skip to main content

Pytest plugin providing Arrakis fixtures for testing

Project description

pytest-arrakis

Pytest plugin providing Arrakis fixtures for testing

pypi version


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

pytest_arrakis-0.2.3.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_arrakis-0.2.3-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file pytest_arrakis-0.2.3.tar.gz.

File metadata

  • Download URL: pytest_arrakis-0.2.3.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.4 cpython/3.13.12 HTTPX/0.28.1

File hashes

Hashes for pytest_arrakis-0.2.3.tar.gz
Algorithm Hash digest
SHA256 fc32b9ac7cccf7a3a7f92333fb1c4a5bb32f4f3abdd4a288536085449a180bb6
MD5 8eea67671b0cbc5915cc0b3a05d431ea
BLAKE2b-256 21e80cc277cc8f3f9802b04c49c0eb13e08b8329a6dea5483cf70f07937cedd3

See more details on using hashes here.

File details

Details for the file pytest_arrakis-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: pytest_arrakis-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 10.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.4 cpython/3.13.12 HTTPX/0.28.1

File hashes

Hashes for pytest_arrakis-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 80d5c411913cd9b93fc70a15022eb4607a4b5a34368b04510c3ecf0f07df7543
MD5 28a58de3334cc5feea6ef7af490ad9f2
BLAKE2b-256 38ced66c6077a026c26977d9af8ecb9e9b07649d2f94c41db07383654030095e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page