Fork me on GitHub

Modern, Pythonic unit testing

at·test /əˈtɛst/
To affirm to be correct, true, or genuine.

Attest is a unit testing framework for Python emphasising modern idioms and conventions.

from attest import Tests, Assert
math = Tests()

@math.test
def arithmetics():
    """Ensure that the laws of physics are in check."""
    assert 1 + 1 == 2

if __name__ == '__main__':
    math.run()

Overview

Why another testing framework and what sets it apart?

  • unittest is overly complicated and its API makes more sense in Java than in Python. Attest has a simple API that makes it powerful and easy to use and feels just right for Python programmers.
  • nose is on the right track but it still relies on naming conventions and implicit test discovery, and building on unittest means it retains its complexity. Attest takes The Zen of Python seriously and is completely explicit with no unpredictable magic.
  • py.test is powerful but also the most magic of all options. This is not a concern for everyone, but if you prefer to be in control of your tools then Attest might be for you.

Attest…

  • is not built on top of unittest or any other framework (but it is compatible with unittest) allowing it to rethink testing from the ground up.
  • follows PEP 8 and PEP 20 and lets you do too.
  • uses modern concepts such as context managers for fixtures and decorators for test registration.
  • makes minimal assumptions so you can write your tests however you prefer.

Table Of Contents