Modern QA2026Common Pitfalls in Async Testing — tiles
Log inJoin
75 / 89 · 04 API & Contract Testing with AI · Asynchronous Testing Patterns← prev⊞ allnext →☰ Read as one page

11.8Common Pitfalls in Async Testing

Pitfall 1: Hardcoded sleep()

# BAD: hardcoded sleep
kafka_producer.send("order.created", event)
time.sleep(5)  # Hope it processed in 5 seconds
order = db.get_order("ord-1")
assert order is not None

# GOOD: poll with timeout
kafka_producer.send("order.created", event)
order = wait_for_condition(
    lambda: db.get_order("ord-1"),
    timeout=10
)
assert order is not None

Pitfall 2: Not Cleaning Up Queues Between Tests

@pytest.fixture(autouse=True)
def clean_queues(sqs_queues):
    """Drain all queues before each test to prevent cross-contamination."""
    for queue_url in sqs_queues.values():
        drain_queue(queue_url, expected_count=100, timeout=2)
    yield

Pitfall 3: Ignoring Message Ordering

When testing ordering, always verify with indexed assertions, not just presence checks:

# BAD: only checks presence
assert "order.created" in events
assert "payment.completed" in events

# GOOD: checks order
assert events.index("order.created") < events.index("payment.completed")