Modern QA2026Dead Letter Queue Testing — tiles
Log inJoin
60 / 89 · 04 API & Contract Testing with AI · Testing Kafka Consumers← prev⊞ allnext →☰ Read as one page

9.6Dead Letter Queue Testing

    def test_failed_events_go_to_dlq(self, kafka_producer, order_consumer, dlq_consumer):
        """Events that fail processing should be sent to the dead letter queue."""
        # Send an event that will cause a processing error
        poison_event = {
            "event_type": "order.created",
            "data": {
                "order_id": "ord-poison",
                "customer_id": "nonexistent-customer",  # Causes FK violation
                "total": 100.00
            }
        }
        kafka_producer.produce(
            'order-events',
            key="ord-poison",
            value=json.dumps(poison_event).encode('utf-8')
        )
        kafka_producer.flush()

        time.sleep(10)
        order_consumer.poll(timeout=1.0)

        # Check that the event landed in the DLQ
        dlq_message = dlq_consumer.poll(timeout=10.0)
        assert dlq_message is not None, "Failed event did not appear in DLQ"

        dlq_data = json.loads(dlq_message.value())
        assert dlq_data["original_event"]["data"]["order_id"] == "ord-poison"
        assert "error" in dlq_data  # Should include the failure reason