some finalizing docs bit, regen plugin docs
--HG-- branch : trunk
This commit is contained in:
parent
1e76202b65
commit
49f7972d48
|
@ -6,12 +6,10 @@ plugins = [
|
||||||
('advanced python testing',
|
('advanced python testing',
|
||||||
'skipping mark pdb figleaf coverage '
|
'skipping mark pdb figleaf coverage '
|
||||||
'monkeypatch capture recwarn tmpdir',),
|
'monkeypatch capture recwarn tmpdir',),
|
||||||
('other testing domains, misc',
|
('distributed testing, CI and deployment',
|
||||||
'oejskit django xdist genscript'),
|
'xdist pastebin junitxml resultlog genscript',),
|
||||||
('reporting and failure logging',
|
('testing domains and conventions',
|
||||||
'pastebin junitxml xmlresult resultlog terminal',),
|
'oejskit django unittest nose doctest restdoc'),
|
||||||
('other testing conventions',
|
|
||||||
'unittest nose doctest restdoc'),
|
|
||||||
('core debugging / help functionality',
|
('core debugging / help functionality',
|
||||||
'helpconfig hooklog')
|
'helpconfig hooklog')
|
||||||
#('internal plugins / core functionality',
|
#('internal plugins / core functionality',
|
||||||
|
@ -22,6 +20,8 @@ plugins = [
|
||||||
|
|
||||||
externals = {
|
externals = {
|
||||||
'oejskit': "run javascript tests in real life browsers",
|
'oejskit': "run javascript tests in real life browsers",
|
||||||
|
'xdist': None,
|
||||||
|
'figleaf': None,
|
||||||
'django': "for testing django applications",
|
'django': "for testing django applications",
|
||||||
'coverage': "for testing with Ned's coverage module ",
|
'coverage': "for testing with Ned's coverage module ",
|
||||||
'xmlresult': "for generating xml reports "
|
'xmlresult': "for generating xml reports "
|
||||||
|
@ -143,6 +143,9 @@ class PluginOverview(RestWriter):
|
||||||
doc = PluginDoc(docpath)
|
doc = PluginDoc(docpath)
|
||||||
doc.make(config=config, name=name)
|
doc.make(config=config, name=name)
|
||||||
self.add_internal_link(name, doc.target)
|
self.add_internal_link(name, doc.target)
|
||||||
|
if name in externals:
|
||||||
|
self.para("%s_ (external) %s" %(name, doc.oneliner))
|
||||||
|
else:
|
||||||
self.para("%s_ %s" %(name, doc.oneliner))
|
self.para("%s_ %s" %(name, doc.oneliner))
|
||||||
self.Print()
|
self.Print()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
py.test/pylib 1.2.0: junitxml, standalone test scripts, pluginization
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
py.test is an advanced automated testing tool working with
|
||||||
|
Python2, Python3 and Jython versions on all major operating
|
||||||
|
systems. It has a simple plugin architecture and can run many
|
||||||
|
existing common Python test suites without modification. It offers
|
||||||
|
some unique features not found in other testing tools.
|
||||||
|
See http://pytest.org for more info.
|
||||||
|
|
||||||
|
py.test 1.2.0 brings many bug fixes and interesting new abilities:
|
||||||
|
|
||||||
|
* --junitxml=path will create an XML file for use with CI processing
|
||||||
|
* --genscript=path creates a standalone py.test-equivalent test-script
|
||||||
|
* --ignore=path prevents collection of anything below that path
|
||||||
|
* --confcutdir=path only lookup conftest.py test configs below that path
|
||||||
|
* a new "pytestconfig" function argument gives direct access to option values
|
||||||
|
* parametrized tests can now be specified per-class as well
|
||||||
|
* on CPython py.test additionally installs as "py.test-VERSION"
|
||||||
|
|
||||||
|
Apart from many bug fixes 1.2.0 also has better pluginization.
|
||||||
|
Distributed testing and looponfailing testing have been moved
|
||||||
|
out into its own "pytest-xdist" plugin which can be installed separately.
|
||||||
|
The same is true for "pytest-figleaf" for doing coverage reporting.
|
||||||
|
Those can also serve well now as blue prints for doing your own.
|
||||||
|
separately released plugins.
|
||||||
|
|
||||||
|
thanks to all who helped and gave feedback,
|
||||||
|
have fun,
|
||||||
|
|
||||||
|
holger krekel, January 2010
|
||||||
|
|
||||||
|
Changes between 1.2.0 and 1.1.1
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
- moved dist/looponfailing from py.test core into a new
|
||||||
|
separately released pytest-xdist plugin.
|
||||||
|
|
||||||
|
- new junitxml plugin: --junitxml=path will generate a junit style xml file
|
||||||
|
which is processable e.g. by the Hudson CI system.
|
||||||
|
|
||||||
|
- new option: --genscript=path will generate a standalone py.test script
|
||||||
|
which will not need any libraries installed. thanks to Ralf Schmitt.
|
||||||
|
|
||||||
|
- new option: --ignore will prevent specified path from collection.
|
||||||
|
Can be specified multiple times.
|
||||||
|
|
||||||
|
- new option: --confcutdir=dir will make py.test only consider conftest
|
||||||
|
files that are relative to the specified dir.
|
||||||
|
|
||||||
|
- new funcarg: "pytestconfig" is the pytest config object for access
|
||||||
|
to command line args and can now be easily used in a test.
|
||||||
|
|
||||||
|
- install 'py.test' and `py.which` with a ``-$VERSION`` suffix to
|
||||||
|
disambiguate between Python3, python2.X, Jython and PyPy installed versions.
|
||||||
|
|
||||||
|
- new "pytestconfig" funcarg allows access to test config object
|
||||||
|
|
||||||
|
- new "pytest_report_header" hook can return additional lines
|
||||||
|
to be displayed at the header of a test run.
|
||||||
|
|
||||||
|
- (experimental) allow "py.test path::name1::name2::..." for pointing
|
||||||
|
to a test within a test collection directly. This might eventually
|
||||||
|
evolve as a full substitute to "-k" specifications.
|
||||||
|
|
||||||
|
- streamlined plugin loading: order is now as documented in
|
||||||
|
customize.html: setuptools, ENV, commandline, conftest.
|
||||||
|
also setuptools entry point names are turned to canonical namees ("pytest_*")
|
||||||
|
|
||||||
|
- automatically skip tests that need 'capfd' but have no os.dup
|
||||||
|
|
||||||
|
- allow pytest_generate_tests to be defined in classes as well
|
||||||
|
|
||||||
|
- deprecate usage of 'disabled' attribute in favour of pytestmark
|
||||||
|
- deprecate definition of Directory, Module, Class and Function nodes
|
||||||
|
in conftest.py files. Use pytest collect hooks instead.
|
||||||
|
|
||||||
|
- collection/item node specific runtest/collect hooks are only called exactly
|
||||||
|
on matching conftest.py files, i.e. ones which are exactly below
|
||||||
|
the filesystem path of an item
|
||||||
|
|
||||||
|
- change: the first pytest_collect_directory hook to return something
|
||||||
|
will now prevent further hooks to be called.
|
||||||
|
|
||||||
|
- change: figleaf plugin now requires --figleaf to run. Also
|
||||||
|
change its long command line options to be a bit shorter (see py.test -h).
|
||||||
|
|
||||||
|
- change: pytest doctest plugin is now enabled by default and has a
|
||||||
|
new option --doctest-glob to set a pattern for file matches.
|
||||||
|
|
||||||
|
- change: remove internal py._* helper vars, only keep py._pydir
|
||||||
|
|
||||||
|
- robustify capturing to survive if custom pytest_runtest_setup
|
||||||
|
code failed and prevented the capturing setup code from running.
|
||||||
|
|
||||||
|
- make py.test.* helpers provided by default plugins visible early -
|
||||||
|
works transparently both for pydoc and for interactive sessions
|
||||||
|
which will regularly see e.g. py.test.mark and py.test.importorskip.
|
||||||
|
|
||||||
|
- simplify internal plugin manager machinery
|
||||||
|
- simplify internal collection tree by introducing a RootCollector node
|
||||||
|
|
||||||
|
- fix assert reinterpreation that sees a call containing "keyword=..."
|
||||||
|
|
||||||
|
- fix issue66: invoke pytest_sessionstart and pytest_sessionfinish
|
||||||
|
hooks on slaves during dist-testing, report module/session teardown
|
||||||
|
hooks correctly.
|
||||||
|
|
||||||
|
- fix issue65: properly handle dist-testing if no
|
||||||
|
execnet/py lib installed remotely.
|
||||||
|
|
||||||
|
- skip some install-tests if no execnet is available
|
||||||
|
|
||||||
|
- fix docs, fix internal bin/ script generation
|
||||||
|
|
|
@ -1,132 +0,0 @@
|
||||||
.. _`distribute tests across machines`:
|
|
||||||
|
|
||||||
===================
|
|
||||||
Distributed testing
|
|
||||||
===================
|
|
||||||
|
|
||||||
``py.test`` can ad-hoc distribute test runs to multiple CPUs or remote
|
|
||||||
machines. This allows to speed up development or to use special resources
|
|
||||||
of remote machines. Before running tests remotely, ``py.test`` efficiently
|
|
||||||
synchronizes your program source code to the remote place. All test results
|
|
||||||
are reported back and displayed to your local test session. You may
|
|
||||||
specify different Python versions and interpreters.
|
|
||||||
|
|
||||||
**Requirements**: you need to install the `execnet`_ package
|
|
||||||
(at least version 1.0.0b4) to perform distributed test runs.
|
|
||||||
|
|
||||||
**NOTE**: Version 1.1.x is not able to distribute tests across Python3/Python2 barriers.
|
|
||||||
|
|
||||||
Speed up test runs by sending tests to multiple CPUs
|
|
||||||
----------------------------------------------------------
|
|
||||||
|
|
||||||
To send tests to multiple CPUs, type::
|
|
||||||
|
|
||||||
py.test -n NUM
|
|
||||||
|
|
||||||
Especially for longer running tests or tests requiring
|
|
||||||
a lot of IO this can lead to considerable speed ups.
|
|
||||||
|
|
||||||
|
|
||||||
Running tests in a Python subprocess
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
To instantiate a python2.4 sub process and send tests to it, you may type::
|
|
||||||
|
|
||||||
py.test -d --tx popen//python=python2.4
|
|
||||||
|
|
||||||
This will start a subprocess which is run with the "python2.4"
|
|
||||||
Python interpreter, found in your system binary lookup path.
|
|
||||||
|
|
||||||
If you prefix the --tx option value like this::
|
|
||||||
|
|
||||||
--tx 3*popen//python=python2.4
|
|
||||||
|
|
||||||
then three subprocesses would be created and tests
|
|
||||||
will be load-balanced across these three processes.
|
|
||||||
|
|
||||||
|
|
||||||
Sending tests to remote SSH accounts
|
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
Suppose you have a package ``mypkg`` which contains some
|
|
||||||
tests that you can successfully run locally. And you
|
|
||||||
have a ssh-reachable machine ``myhost``. Then
|
|
||||||
you can ad-hoc distribute your tests by typing::
|
|
||||||
|
|
||||||
py.test -d --tx ssh=myhostpopen --rsyncdir mypkg mypkg
|
|
||||||
|
|
||||||
This will synchronize your ``mypkg`` package directory
|
|
||||||
to an remote ssh account and then locally collect tests
|
|
||||||
and send them to remote places for execution.
|
|
||||||
|
|
||||||
You can specify multiple ``--rsyncdir`` directories
|
|
||||||
to be sent to the remote side.
|
|
||||||
|
|
||||||
**NOTE:** For py.test to collect and send tests correctly
|
|
||||||
you not only need to make sure all code and tests
|
|
||||||
directories are rsynced, but that any test (sub) directory
|
|
||||||
also has an ``__init__.py`` file because internally
|
|
||||||
py.test references tests as a fully qualified python
|
|
||||||
module path. **You will otherwise get strange errors**
|
|
||||||
during setup of the remote side.
|
|
||||||
|
|
||||||
Sending tests to remote Socket Servers
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
Download the single-module `socketserver.py`_ Python program
|
|
||||||
and run it like this::
|
|
||||||
|
|
||||||
python socketserver.py
|
|
||||||
|
|
||||||
It will tell you that it starts listening on the default
|
|
||||||
port. You can now on your home machine specify this
|
|
||||||
new socket host with something like this::
|
|
||||||
|
|
||||||
py.test -d --tx socket=192.168.1.102:8888 --rsyncdir mypkg mypkg
|
|
||||||
|
|
||||||
|
|
||||||
.. _`atonce`:
|
|
||||||
|
|
||||||
Running tests on many platforms at once
|
|
||||||
-------------------------------------------------------------
|
|
||||||
|
|
||||||
The basic command to run tests on multiple platforms is::
|
|
||||||
|
|
||||||
py.test --dist=each --tx=spec1 --tx=spec2
|
|
||||||
|
|
||||||
If you specify a windows host, an OSX host and a Linux
|
|
||||||
environment this command will send each tests to all
|
|
||||||
platforms - and report back failures from all platforms
|
|
||||||
at once. The specifications strings use the `xspec syntax`_.
|
|
||||||
|
|
||||||
.. _`xspec syntax`: http://codespeak.net/execnet/trunk/basics.html#xspec
|
|
||||||
|
|
||||||
.. _`socketserver.py`: http://codespeak.net/svn/py/dist/py/execnet/script/socketserver.py
|
|
||||||
|
|
||||||
.. _`execnet`: http://codespeak.net/execnet
|
|
||||||
|
|
||||||
Specifying test exec environments in a conftest.py
|
|
||||||
-------------------------------------------------------------
|
|
||||||
|
|
||||||
Instead of specifying command line options, you can
|
|
||||||
put options values in a ``conftest.py`` file like this::
|
|
||||||
|
|
||||||
pytest_option_tx = ['ssh=myhost//python=python2.5', 'popen//python=python2.5']
|
|
||||||
pytest_option_dist = True
|
|
||||||
|
|
||||||
Any commandline ``--tx`` specifictions will add to the list of available execution
|
|
||||||
environments.
|
|
||||||
|
|
||||||
Specifying "rsync" dirs in a conftest.py
|
|
||||||
-------------------------------------------------------------
|
|
||||||
|
|
||||||
In your ``mypkg/conftest.py`` you may specify directories to synchronise
|
|
||||||
or to exclude::
|
|
||||||
|
|
||||||
rsyncdirs = ['.', '../plugins']
|
|
||||||
rsyncignore = ['_cache']
|
|
||||||
|
|
||||||
These directory specifications are relative to the directory
|
|
||||||
where the ``conftest.py`` is found.
|
|
||||||
|
|
||||||
|
|
|
@ -9,22 +9,40 @@ py.test feature overview
|
||||||
mature command line testing tool
|
mature command line testing tool
|
||||||
====================================================
|
====================================================
|
||||||
|
|
||||||
py.test is a command line tool to collect and run automated tests. It
|
py.test is a command line tool to collect, run and report about automated tests. It runs well on Linux, Windows and OSX and on Python 2.4 through to 3.1 versions.
|
||||||
runs well on Linux, Windows and OSX Python 2.4 through to 2.6 versions.
|
It is used in many projects, ranging from running 10 thousands of tests
|
||||||
It can distribute a single test run to multiple machines. It is used in
|
to a few inlined tests on a command line script. As of version 1.2 you can also
|
||||||
many projects, ranging from running 10 thousands of tests integrated
|
generate a no-dependency py.test-equivalent standalone script that you
|
||||||
with buildbot to a few inlined tests on a command line script.
|
can distribute along with your application.
|
||||||
|
|
||||||
.. _`autocollect`:
|
extensive easy plugin system
|
||||||
|
======================================================
|
||||||
|
|
||||||
automatically collects and executes tests
|
.. _`suprisingly easy`: http://bruynooghe.blogspot.com/2009/12/skipping-slow-test-by-default-in-pytest.html
|
||||||
===============================================
|
|
||||||
|
|
||||||
py.test discovers tests automatically by looking at
|
py.test delegates almost all aspects of its operation to plugins_.
|
||||||
specified directories and its files for common
|
It is `suprisingly easy`_ to add command line options or
|
||||||
naming patterns. As ``py.test`` operates as a separate
|
do other kind of add-ons and customizations. This can
|
||||||
cmdline tool you can easily have a command line utility and
|
be done per-project or by distributing a global plugin.
|
||||||
some tests in the same file.
|
One can can thus modify or add aspects for purposes such as:
|
||||||
|
|
||||||
|
* reporting extensions
|
||||||
|
* customizing collection and execution of tests
|
||||||
|
* running and managing non-python tests
|
||||||
|
* managing domain-specific test state setup
|
||||||
|
* adding non-python tests into the run, e.g. driven by data files
|
||||||
|
|
||||||
|
.. _`plugins`: plugin/index.html
|
||||||
|
|
||||||
|
distributing tests to your CPUs and SSH accounts
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
.. _`pytest-xdist`: plugin/xdist.html
|
||||||
|
|
||||||
|
Through the use of the separately released `pytest-xdist`_ plugin you
|
||||||
|
can seemlessly distribute runs to multiple CPUs or remote computers
|
||||||
|
through SSH and sockets. This plugin also offers a ``--looponfailing``
|
||||||
|
mode which will continously re-run only failing tests in a subprocess.
|
||||||
|
|
||||||
supports several testing practises and methods
|
supports several testing practises and methods
|
||||||
==================================================================
|
==================================================================
|
||||||
|
@ -40,9 +58,20 @@ with figleaf`_ or `Javasript unit- and functional testing`_.
|
||||||
.. _`Javasript unit- and functional testing`: plugin/oejskit.html
|
.. _`Javasript unit- and functional testing`: plugin/oejskit.html
|
||||||
.. _`coverage testing with figleaf`: plugin/figleaf.html
|
.. _`coverage testing with figleaf`: plugin/figleaf.html
|
||||||
|
|
||||||
|
integrates well with CI systems
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
py.test can produce JUnitXML style output as well as formatted
|
||||||
|
"resultlog" files that can be postprocessed by Continous Integration
|
||||||
|
systems such as Hudson or Buildbot easily. It also provides command
|
||||||
|
line options to control test configuration lookup behaviour or ignoring
|
||||||
|
certain tests or directories.
|
||||||
|
|
||||||
no-boilerplate test functions with Python
|
no-boilerplate test functions with Python
|
||||||
===================================================
|
===================================================
|
||||||
|
|
||||||
|
.. _`autocollect`:
|
||||||
|
|
||||||
automatic Python test discovery
|
automatic Python test discovery
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
|
@ -53,13 +82,18 @@ filename are inspected for finding tests:
|
||||||
* classes with a leading ``Test`` name and ``test`` prefixed methods.
|
* classes with a leading ``Test`` name and ``test`` prefixed methods.
|
||||||
* ``unittest.TestCase`` subclasses
|
* ``unittest.TestCase`` subclasses
|
||||||
|
|
||||||
test functions can run with different argument sets
|
parametrizing test functions and advanced functional testing
|
||||||
-----------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
py.test offers the unique `funcargs mechanism`_ for setting up
|
py.test offers the unique `funcargs mechanism`_ for setting up
|
||||||
and passing project-specific objects to Python test functions.
|
and passing project-specific objects to Python test functions.
|
||||||
Test Parametrization happens by triggering a call to the same test
|
Test Parametrization happens by triggering a call to the same test
|
||||||
functions with different argument values.
|
function with different argument values. For doing fixtures
|
||||||
|
using the funcarg mechanism makes your test and setup code
|
||||||
|
more efficient and more readable. This is especially true
|
||||||
|
for functional tests which might depend on command line
|
||||||
|
options and a setup that needs to be shared across
|
||||||
|
a whole test run.
|
||||||
|
|
||||||
per-test capturing of output, including subprocesses
|
per-test capturing of output, including subprocesses
|
||||||
----------------------------------------------------
|
----------------------------------------------------
|
||||||
|
@ -137,30 +171,6 @@ can make use of this feature.
|
||||||
.. _`xUnit style setup`: xunit_setup.html
|
.. _`xUnit style setup`: xunit_setup.html
|
||||||
.. _`pytest_nose`: plugin/nose.html
|
.. _`pytest_nose`: plugin/nose.html
|
||||||
|
|
||||||
load-balance test runs to multiple CPUs
|
|
||||||
========================================
|
|
||||||
|
|
||||||
For large test suites you can distribute your
|
|
||||||
tests to multiple CPUs by issuing for example::
|
|
||||||
|
|
||||||
py.test -n 3
|
|
||||||
|
|
||||||
Read more on `distributed testing`_.
|
|
||||||
|
|
||||||
.. _`distributed testing`: dist.html
|
|
||||||
|
|
||||||
ad-hoc run tests cross-platform
|
|
||||||
==================================================
|
|
||||||
|
|
||||||
py.test supports the sending of tests to
|
|
||||||
remote ssh-accounts, socket servers.
|
|
||||||
It can `ad-hoc run your test on multiple
|
|
||||||
platforms one a single test run`. Ad-hoc
|
|
||||||
means that there are **no installation
|
|
||||||
requirements whatsoever** on the remote side.
|
|
||||||
|
|
||||||
.. _`ad-hoc run your test on multiple platforms one a single test run`: dist.html#atonce
|
|
||||||
|
|
||||||
advanced test selection and running modes
|
advanced test selection and running modes
|
||||||
=========================================================
|
=========================================================
|
||||||
|
|
||||||
|
@ -202,21 +212,6 @@ plugin for more information.
|
||||||
|
|
||||||
.. _`pytest_keyword`: plugin/mark.html
|
.. _`pytest_keyword`: plugin/mark.html
|
||||||
|
|
||||||
easy to extend
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
py.test has advanced `extension mechanisms`_
|
|
||||||
with a growing `list of default plugins`_.
|
|
||||||
One can can easily modify or add aspects for for
|
|
||||||
purposes such as:
|
|
||||||
|
|
||||||
* reporting extensions
|
|
||||||
* customizing collection and execution of tests
|
|
||||||
* running and managing non-python tests
|
|
||||||
* managing domain-specific test state setup
|
|
||||||
|
|
||||||
.. _`list of default plugins`: plugin/index.html
|
|
||||||
.. _`extension mechanisms`: customize.html#extensions
|
|
||||||
|
|
||||||
.. _`reStructured Text`: http://docutils.sourceforge.net
|
.. _`reStructured Text`: http://docutils.sourceforge.net
|
||||||
.. _`Python debugger`: http://docs.python.org/lib/module-pdb.html
|
.. _`Python debugger`: http://docs.python.org/lib/module-pdb.html
|
||||||
|
|
|
@ -24,6 +24,5 @@ changelog_: history of changes covering last releases
|
||||||
.. _features: features.html
|
.. _features: features.html
|
||||||
.. _funcargs: funcargs.html
|
.. _funcargs: funcargs.html
|
||||||
.. _customize: customize.html
|
.. _customize: customize.html
|
||||||
.. _`distributed testing`: dist.html
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ mark_ generic mechanism for marking python functions.
|
||||||
|
|
||||||
pdb_ interactive debugging with the Python Debugger.
|
pdb_ interactive debugging with the Python Debugger.
|
||||||
|
|
||||||
figleaf_ report test coverage using the 'figleaf' package.
|
figleaf_ (external) report test coverage using the 'figleaf' package.
|
||||||
|
|
||||||
coverage_ (external) for testing with Ned's coverage module
|
coverage_ (external) for testing with Ned's coverage module
|
||||||
|
|
||||||
|
@ -21,34 +21,26 @@ recwarn_ helpers for asserting deprecation and other warnings.
|
||||||
tmpdir_ provide temporary directories to test functions.
|
tmpdir_ provide temporary directories to test functions.
|
||||||
|
|
||||||
|
|
||||||
other testing domains, misc
|
distributed testing, CI and deployment
|
||||||
===========================
|
======================================
|
||||||
|
|
||||||
oejskit_ (external) run javascript tests in real life browsers
|
xdist_ (external) loop on failing tests, distribute test runs to CPUs and hosts.
|
||||||
|
|
||||||
django_ (external) for testing django applications
|
|
||||||
|
|
||||||
xdist_ loop on failing tests, distribute test runs to CPUs and hosts.
|
|
||||||
|
|
||||||
genscript_ generate standalone test script to be distributed along with an application.
|
|
||||||
|
|
||||||
|
|
||||||
reporting and failure logging
|
|
||||||
=============================
|
|
||||||
|
|
||||||
pastebin_ submit failure or test session information to a pastebin service.
|
pastebin_ submit failure or test session information to a pastebin service.
|
||||||
|
|
||||||
junitxml_ logging of test results in JUnit-XML format, for use with Hudson
|
junitxml_ logging of test results in JUnit-XML format, for use with Hudson
|
||||||
|
|
||||||
xmlresult_ (external) for generating xml reports and CruiseControl integration
|
|
||||||
|
|
||||||
resultlog_ non-xml machine-readable logging of test results.
|
resultlog_ non-xml machine-readable logging of test results.
|
||||||
|
|
||||||
terminal_ Implements terminal reporting of the full testing process.
|
genscript_ generate standalone test script to be distributed along with an application.
|
||||||
|
|
||||||
|
|
||||||
other testing conventions
|
testing domains and conventions
|
||||||
=========================
|
===============================
|
||||||
|
|
||||||
|
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.
|
unittest_ automatically discover and run traditional "unittest.py" style tests.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
.. _`helpconfig`: helpconfig.html
|
.. _`helpconfig`: helpconfig.html
|
||||||
.. _`terminal`: terminal.html
|
|
||||||
.. _`pytest_recwarn.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_recwarn.py
|
.. _`pytest_recwarn.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_recwarn.py
|
||||||
.. _`unittest`: unittest.html
|
.. _`unittest`: unittest.html
|
||||||
.. _`pytest_monkeypatch.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_monkeypatch.py
|
.. _`pytest_monkeypatch.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_monkeypatch.py
|
||||||
|
@ -15,7 +14,6 @@
|
||||||
.. _`pytest_nose.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_nose.py
|
.. _`pytest_nose.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_nose.py
|
||||||
.. _`pytest_restdoc.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_restdoc.py
|
.. _`pytest_restdoc.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_restdoc.py
|
||||||
.. _`restdoc`: restdoc.html
|
.. _`restdoc`: restdoc.html
|
||||||
.. _`xdist`: xdist.html
|
|
||||||
.. _`pytest_pastebin.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_pastebin.py
|
.. _`pytest_pastebin.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_pastebin.py
|
||||||
.. _`pytest_tmpdir.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_tmpdir.py
|
.. _`pytest_tmpdir.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_tmpdir.py
|
||||||
.. _`pytest_figleaf.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_figleaf.py
|
.. _`pytest_figleaf.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_figleaf.py
|
||||||
|
@ -33,15 +31,14 @@
|
||||||
.. _`figleaf`: figleaf.html
|
.. _`figleaf`: figleaf.html
|
||||||
.. _`customize`: ../customize.html
|
.. _`customize`: ../customize.html
|
||||||
.. _`hooklog`: hooklog.html
|
.. _`hooklog`: hooklog.html
|
||||||
.. _`pytest_terminal.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_terminal.py
|
|
||||||
.. _`recwarn`: recwarn.html
|
.. _`recwarn`: recwarn.html
|
||||||
|
.. _`xdist`: xdist.html
|
||||||
.. _`pytest_pdb.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_pdb.py
|
.. _`pytest_pdb.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_pdb.py
|
||||||
.. _`monkeypatch`: monkeypatch.html
|
.. _`monkeypatch`: monkeypatch.html
|
||||||
.. _`coverage`: coverage.html
|
.. _`coverage`: coverage.html
|
||||||
.. _`resultlog`: resultlog.html
|
.. _`resultlog`: resultlog.html
|
||||||
.. _`pytest_junitxml.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_junitxml.py
|
.. _`pytest_junitxml.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_junitxml.py
|
||||||
.. _`django`: django.html
|
.. _`django`: django.html
|
||||||
.. _`xmlresult`: xmlresult.html
|
|
||||||
.. _`pytest_unittest.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_unittest.py
|
.. _`pytest_unittest.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_unittest.py
|
||||||
.. _`nose`: nose.html
|
.. _`nose`: nose.html
|
||||||
.. _`pytest_resultlog.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_resultlog.py
|
.. _`pytest_resultlog.py`: http://bitbucket.org/hpk42/py-trunk/raw/1.2.0/py/plugin/pytest_resultlog.py
|
||||||
|
|
|
@ -26,7 +26,7 @@ program source code to the remote place. All test results
|
||||||
are reported back and displayed to your local test session.
|
are reported back and displayed to your local test session.
|
||||||
You may specify different Python versions and interpreters.
|
You may specify different Python versions and interpreters.
|
||||||
|
|
||||||
.. _`pytest-xdist`: http://pytest.org/plugin/xdist.html
|
.. _`pytest-xdist`: http://pypi.python.org/pypi/pytest-xdist
|
||||||
|
|
||||||
Usage examples
|
Usage examples
|
||||||
---------------------
|
---------------------
|
||||||
|
|
Loading…
Reference in New Issue