Ward is a Python testing framework with a focus on productivity and readability. It gives you the tools you need to write well-documented and scalable tests.

An example output from Ward


  • Describe your tests using strings instead of function names

  • Use plain assert statements, with no need to remember assert* method names

  • Beautiful output that focuses on readability

  • Manage test dependencies using a simple but powerful fixture system

  • Parameterised testing allows you to run a single test on multiple inputs

  • Support for testing async code

  • Supported on MacOS, Linux, and Windows

  • Configurable with pyproject.toml, but works out-of-the-box with sensible defaults

  • Extendable via a plugin system (coming soon)

  • Speedy – Ward’s suite of ~300 tests completes in ~0.4 seconds on my machine


Ward is available on PyPI, and can be installed with pip install ward (Python 3.6+ required).

A Quick Taste

Here’s a simple example of a test written using Ward:

# file: test_example.py
from ward import test

@test("the list contains 42")
def _():
    assert 42 in [-21, 42, 999]

To run the test, simply run ward in your terminal, and Ward will let you know how it went:

An example test result output from Ward