Zookeeper, Kafka server, and Kafka consumer fixtures for Pytest
pip install pytest-kafka==0.5.0
Pytest fixture factories for Zookeeper, Kafka server and Kafka consumer. API docs.
from pytest_kafka import make_zookeeper_process, make_kafka_server, make_kafka_consumer
ROOT = Path(__file__).parent
KAFKA_SCRIPTS = ROOT / 'kafka/bin/'
KAFKA_BIN = str(KAFKA_SCRIPTS / 'kafka-server-start.sh')
ZOOKEEPER_BIN = str(KAFKA_SCRIPTS / 'zookeeper-server-start.sh')
zookeeper_proc = make_zookeeper_process(ZOOKEEPER_BIN)
kafka_server = make_kafka_server(KAFKA_BIN, 'zookeeper_proc')
kafka_consumer = make_kafka_consumer(
'kafka_server', seek_to_beginning=True, kafka_topics=['topic'])
This creates 3 fixtures:
zookeeper_proc
- Zookeeper processkafka_server
- Kafka processkafka_consumer
- usable kafka.KafkaConsumer
instanceZOOKEEPER_BIN
and KAFKA_BIN
are paths to launch scripts in your Kafka distribution. Check
this project's setup.py to see a way of installing Kafka for development.
It is advised to pass seek_to_beginning=True
because otherwise some messages may not be captured
by the consumer. This requires knowing the topics upfront because without topics there's no
partitions to seek.
It's possible to create multiple Kafka fixtures forming a cluster by passing the same Zookeeper fixture to them. For an example, check the tests.
Session-scoped fixtures are also available. Consult the test suite.
Execute ./setup.py develop
in a virtualenv. This will take care of:
The library has been open-sourced from a codebase belonging to Infectious Media.