.. _features: .. note:: second training: `professional testing with Python <http://www.python-academy.com/courses/specialtopics/python_course_testing.html>`_ , 25-27th November 2013, Leipzig. pytest: helps you write better programs ============================================= **a mature full-featured Python testing tool** - runs on Posix/Windows, Python 2.4-3.3, PyPy and Jython-2.5.1 - :ref:`comprehensive online <toc>` and `PDF documentation <pytest.pdf>`_ - many :ref:`third party plugins <extplugins>` and :ref:`builtin helpers <pytest helpers>` - used in :ref:`many projects and organisations <projects>`, in test suites with up to twenty thousand tests - strict policy of remaining backward compatible across releases - comes with many :ref:`tested examples <examples>` **provides easy no-boilerplate testing** - makes it :ref:`easy to get started <getstarted>`, many :ref:`usage options <usage>` - :ref:`assert with the assert statement` - helpful :ref:`traceback and failing assertion reporting <tbreportdemo>` - allows :ref:`print debugging <printdebugging>` and :ref:`the capturing of standard output during test execution <captures>` **scales from simple unit to complex functional testing** - :ref:`modular parametrizeable fixtures <fixture>` (new in 2.3, improved in 2.4) - :ref:`parametrized test functions <parametrized test functions>` - :ref:`mark` - :ref:`skipping` (improved in 2.4) - can :ref:`distribute tests to multiple CPUs <xdistcpu>` through :ref:`xdist plugin <xdist>` - can :ref:`continuously re-run failing tests <looponfailing>` - flexible :ref:`Python test discovery` **integrates many common testing methods**: - multi-paradigm: pytest can run many ``nose``, ``unittest.py`` and ``doctest.py`` style test suites, including running testcases made for Django and trial - supports :ref:`good integration practises <goodpractises>` - supports extended :ref:`xUnit style setup <xunitsetup>` - supports domain-specific :ref:`non-python tests` - supports the generation of testing coverage reports - `Javascript unit- and functional testing`_ - 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 .. _`Javascript unit- and functional testing`: http://pypi.python.org/pypi/oejskit .. _`easy`: http://bruynooghe.blogspot.com/2009/12/skipping-slow-test-by-default-in-pytest.html