.. _features:
.. note::
`improving your automated testing with pytest `_, July 25th 2014, Berlin, Germany
`professional testing with pytest and tox `_, 24-26th November 2014, Freiburg, Germany
pytest: helps you write better programs
=============================================
**a mature full-featured Python testing tool**
- runs on Posix/Windows, Python 2.5-3.4, PyPy and Jython-2.5.1
- **well tested** with more than a thousand tests against itself
- **strict backward compatibility policy** for safe pytest upgrades
- :ref:`comprehensive online ` and `PDF documentation `_
- many :ref:`third party plugins ` and :ref:`builtin helpers `,
- used in :ref:`many small and large projects and organisations `
- comes with many :ref:`tested examples `
**provides easy no-boilerplate testing**
- makes it :ref:`easy to get started `,
has many :ref:`usage options `
- :ref:`assert with the assert statement`
- helpful :ref:`traceback and failing assertion reporting `
- :ref:`print debugging ` and :ref:`the
capturing of standard output during test execution `
**scales from simple unit to complex functional testing**
- :ref:`modular parametrizeable fixtures ` (new in 2.3,
continously improved)
- :ref:`parametrized test functions `
- :ref:`mark`
- :ref:`skipping` (improved in 2.4)
- :ref:`distribute tests to multiple CPUs ` through :ref:`xdist plugin `
- :ref:`continuously re-run failing tests `
- flexible :ref:`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 :ref:`good integration practises `
- supports extended :ref:`xUnit style setup `
- supports domain-specific :ref:`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`: http://bruynooghe.blogspot.com/2009/12/skipping-slow-test-by-default-in-pytest.html