litestar-testing

- Choose the right client shape first: TestClient , AsyncTestClient , create_test_client , or subprocess live-server helpers.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "litestar-testing" with this command: npx skills add alti3/litestar-skills/alti3-litestar-skills-litestar-testing

Testing

Execution Workflow

  • Choose the right client shape first: TestClient , AsyncTestClient , create_test_client , or subprocess live-server helpers.

  • Build fixtures with deterministic configuration, dependencies, and lifecycle boundaries.

  • Isolate external I/O with injected fakes or mocked dependencies instead of monkeypatching internals.

  • Assert full contracts: status code, body, headers, cookies, side effects, and failure payload shape.

  • Cover error paths deliberately, including validation failures, app-level exception mappings, event-listener failures, layered override precedence, and schema/docs regressions.

Core Rules

  • Keep tests deterministic in time, randomness, and I/O.

  • Use AsyncTestClient when tests, fixtures, and app resources must share the same event loop.

  • Use create_test_client for isolated handler tests or small app subsets.

  • Prefer dependency injection and fake services over patching transport-layer code.

  • Assert stable error contracts, not just that an exception occurred.

  • Reset overrides and fixture state between tests.

  • Use live-server subprocess helpers when the in-process client cannot emulate the transport correctly.

Decision Guide

  • Use TestClient for synchronous tests that do not need to share async resources with the app.

  • Use AsyncTestClient when async fixtures or resources are involved.

  • Use create_test_client when you want a disposable app assembled inline for one test.

  • Use websocket_connect() for websocket contract tests.

  • Use subprocess clients for infinite SSE streams or other cases where HTTPX's in-process transport is insufficient.

Reference Files

Read only the sections you need:

  • For client selection, fixtures, async event-loop behavior, websocket tests, blocking-portal usage, and subprocess live-server helpers, read references/client-patterns.md.

  • For dependency overrides, mocked dependencies, exception-contract assertions, event-emission tests, listener-failure tests, schema/docs regressions, 404 /405 testing, and layered precedence tests, read references/failure-patterns.md.

Recommended Defaults

  • Turn on app.debug only when a test needs it; otherwise keep tests aligned with production-facing behavior.

  • Keep app assembly near the test when only one handler or one contract is under test.

  • Assert response payloads and headers fully for custom exception handlers.

  • Use one fake implementation per dependency boundary instead of broad monkeypatching.

  • Prefer explicit fixtures over hidden global state.

Anti-Patterns

  • Using TestClient with async fixtures that create loop-bound resources.

  • Asserting only status codes for custom error handlers.

  • Letting dependency overrides leak across tests.

  • Treating websocket tests like plain HTTP tests and ignoring handshake or frame behavior.

  • Using in-process clients for transport patterns the docs call out as poor fits, such as infinite SSE streams.

  • Relying on debug-only stack traces as part of the tested contract.

Validation Checklist

  • Confirm client choice matches the event-loop and resource model.

  • Confirm startup and shutdown behavior are exercised where relevant.

  • Confirm dependency overrides and mocked services are scoped to the test.

  • Confirm expected failures produce stable payloads, headers, and status codes.

  • Confirm emitted events and listener side effects are asserted when the feature depends on the event bus.

  • Confirm app-level 404 and 405 handlers are tested at app scope.

  • Confirm layered overrides behave as expected at app, router, controller, and handler scope.

  • Confirm websocket tests assert both send and receive behavior.

  • Confirm live-server helpers are used for scenarios the in-process client cannot model correctly.

  • Confirm generated schema/docs regressions are covered when response or error contracts change.

Cross-Skill Handoffs

  • Use litestar-dependency-injection to design override-friendly providers and scope rules.

  • Use litestar-exception-handling to standardize failure envelopes before locking tests.

  • Use litestar-events when tests depend on event IDs, listeners, and custom emitter behavior.

  • Use litestar-responses for stream, redirect, file, and SSE contract details.

  • Use litestar-openapi when tests must lock down schema or docs behavior.

  • Use litestar-websockets when the main challenge is websocket endpoint design rather than test harness setup.

Litestar References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

litestar-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

advanced-alchemy-cli

No summary provided by upstream source.

Repository SourceNeeds Review
General

litestar-responses

No summary provided by upstream source.

Repository SourceNeeds Review
General

litestar-databases

No summary provided by upstream source.

Repository SourceNeeds Review