
advanced python testing
=======================

skipping_ advanced skipping for python test functions, classes or modules.

mark_ generic mechanism for marking python functions.

pdb_ interactive debugging with the Python Debugger.

figleaf_ (external) report test coverage using the 'figleaf' package.

monkeypatch_ safely patch object attributes, dicts and environment variables.

coverage_ (external) Write and report coverage data with the 'coverage' package.

cov_ (external) produce code coverage reports using the 'coverage' package, including support for distributed testing.

capture_ configurable per-test stdout/stderr capturing mechanisms.

capturelog_ (external) capture output of logging module.

recwarn_ helpers for asserting deprecation and other warnings.

tmpdir_ provide temporary directories to test functions.


distributed testing, CI and deployment
======================================

xdist_ (external) loop on failing tests, distribute test runs to CPUs and hosts.

pastebin_ submit failure or test session information to a pastebin service.

junitxml_ logging of test results in JUnit-XML format, for use with Hudson

resultlog_ non-xml machine-readable logging of test results.

genscript_ generate standalone test script to be distributed along with an application.


testing domains and conventions codecheckers
============================================

oejskit_ (external) run javascript tests in real life browsers

django_ (external) for testing django applications

unittest_ automatically discover and run traditional "unittest.py" style tests.

nose_ nose-compatibility plugin: allow to run nose test suites natively.

doctest_ collect and execute doctests from modules and test files.

restdoc_ perform ReST syntax, local and remote reference tests on .rst/.txt files.


internal, debugging, help functionality
=======================================

helpconfig_ provide version info, conftest/environment config names.

terminal_ Implements terminal reporting of the full testing process.

hooklog_ log invocations of extension hooks to a file.


.. include:: links.txt
