# pytest: helps you write better programs

a mature full-featured Python testing tool

> - runs on Posix/Windows, Python 2.6-3.5, PyPy and (possibly still) Jython-2.5.1
> - well tested with more than a thousand tests against itself
> - strict backward compatibility policy for safe pytest upgrades
> - comprehensive online and PDF documentation
> - many third party plugins and builtin helpers,
> - used in many small and large projects and organisations
> - comes with many tested examples

provides easy no-boilerplate testing

> - makes it easy to get started, has many usage options
> - Asserting with the assert statement
> - helpful traceback and failing assertion reporting
> - print debugging and the capturing of standard output during test execution

scales from simple unit to complex functional testing

> - modular parametrizeable fixtures (new in 2.3, continuously improved)
> - parametrized test functions
> - Marking test functions with attributes
> - Skip and xfail: dealing with tests that can not succeed (improved in 2.4)
> - distribute tests to multiple CPUs through xdist plugin
> - continuously re-run failing tests
> - Cache: working with cross-testrun state
> - flexible Conventions for Python test discovery

integrates with other testing methods and tools:

> - multi-paradigm: pytest can run `nose`, `unittest` and `doctest` style test suites, including running testcases made for Django and trial
> - supports good integration practices
> - supports extended xUnit style setup
> - supports domain-specific Working with non-python tests
> - supports generating test coverage reports
> - supports PEP 8 compliant coding styles in tests

extensive plugin and customization system:

> - all collection, reporting, running aspects are delegated to hook functions
> - customizations can be per-directory, per-project or per PyPI released plugin
> - it is easy to add command line options or customize existing behaviour
> - easy to write your own plugins