pytest-trio: Pytest plugin for trio

This is a pytest plugin to help you test projects that use Trio, a friendly library for concurrency and async I/O in Python. Features include:

  • Async tests without the boilerplate: just write async def test_whatever(): ....
  • Useful fixtures included: use autojump_clock for easy testing of code with timeouts, or nursery to easily set up background tasks.
  • Write your own async fixtures: set up an async database connection or start a server inside a fixture, and then use it in your tests.
  • If you have multiple async fixtures, pytest-trio will even do setup/teardown concurrently whenever possible. (Though honestly, we’re not sure whether this is a good idea or not and might remove it in the future. If it makes your tests harder to debug, or conversely provides you with big speedups, please let us know.)
  • Integration with the fabulous Hypothesis library, so your async tests can use property-based testing: just use @given like you’re used to.
  • Support for testing projects that use Trio exclusively and want to use pytest-trio everywhere, and also for testing projects that support multiple async libraries and only want to enable pytest-trio’s features for a subset of their test suite.