Unit, integration, contract (Pact), and service tests — mock external services in unit tests.
Testing Microservices
# 1. Unit tests (fast, no network)
def test_order_total():
order = Order(items=[Item("book",10.00),Item("pen",2.50)])
assert order.total() == 12.50
# 2. Integration tests (service + real DB)
def test_create_order(db_session):
svc = OrderService(db_session)
order = svc.create(user_id=1, items=[...])
assert db_session.get(Order, order.id).status == "pending"
# 3. Contract tests (Pact)
# Consumer defines expected API
# Provider verifies it matches
# 4. Mock external services
import responses
@responses.activate
def test_order_reserves_inventory():
responses.add(responses.POST,
"http://inventory-svc/reserve",
json={"reserved":True}, status=200)
result = order_service.place(user_id=1, items=[...])
assert result.status == "confirmed"