Go to file
Floris Bruynooghe a98e3cefc5 Enable re-writing of setuptools-installed plugins
Hook up the PEP 302 import hook very early in pytest startup so
that it gets installed before setuptools-installed plugins are
imported.  Also iterate over all installed plugins and mark them
for rewriting.  If an installed plugin is already imported then
a warning is issued, we can not break since that might break
existing plugins and the fallback will still be gracefull to
plain asserts.

Some existing tests are failing in this commit because of the new
warning triggered by inline pytest runs due to the hypothesis
plugin already being imported.  The tests will be fixed in the next
commit.
2016-07-13 17:29:19 +01:00
.github Introduce pytest command as recommended entry point 2016-06-21 16:16:57 +02:00
_pytest Enable re-writing of setuptools-installed plugins 2016-07-13 17:29:19 +01:00
bench simplify internal pytester machinery 2014-10-06 13:37:57 +02:00
doc/en Fix 2.10 -> 3.0 versions in docs 2016-07-12 21:02:40 -03:00
extra Adapt get_issues.py script for GitHub (instead of Bitbucket) 2016-03-28 20:00:57 +02:00
testing Enable re-writing of setuptools-installed plugins 2016-07-13 17:29:19 +01:00
.coveragerc Ignore vendored_packages folder for coverage purposes 2015-09-14 10:30:58 -03:00
.gitattributes Use "union" merge strategy for CHANGELOG 2015-08-10 19:27:22 -03:00
.gitignore merge master to features 2016-06-01 08:13:26 +02:00
.travis.yml merge latest master into features as well 2016-02-05 00:13:48 +01:00
AUTHORS Allow passing a custom Pdb subclass via --pdbcls. 2016-07-09 21:10:52 -07:00
CHANGELOG.rst Enable re-writing of setuptools-installed plugins 2016-07-13 17:29:19 +01:00
CONTRIBUTING.rst Add changelog to requirements for pytest-dev plugins 2016-06-30 22:25:09 +02:00
HOWTORELEASE.rst fix minor typos 2016-06-01 08:03:22 +02:00
ISSUES.txt Dummy change to test readthedocs hook 2016-01-27 08:59:26 -02:00
LICENSE Wrap lines at 79 characters 2016-02-16 19:14:55 +00:00
MANIFEST.in Add CHANGELOG.rst to MANIFEST and small format fix 2016-01-05 20:01:41 -02:00
README.rst fix typo and remove python3.2 from readme 2016-06-27 18:19:00 +02:00
appveyor.yml Split AppVeyor test runs in multiple jobs to avoid timeout issues 2016-07-04 21:54:21 -03:00
plugin-test.sh Introduce pytest command as recommended entry point 2016-06-21 16:16:57 +02:00
pytest.py revert setuptools_scm addition introduced with f22d14b105 2015-09-17 12:58:04 +02:00
requirements-docs.txt use regendoc normalization and regenerate docs 2015-06-06 23:30:49 +02:00
runtox.py make runtox.py not import external modules unless run as a script 2014-04-05 08:51:00 +02:00
setup.cfg configure a plain "devpi upload" to create sdist and universal wheel 2015-07-09 14:56:56 +02:00
setup.py drop python 3.0-3.2 support code from setup.py 2016-06-27 17:55:37 +02:00
tox.ini merge from master to features 2016-07-06 11:51:48 +02:00

README.rst

.. image:: http://pytest.org/latest/_static/pytest1.png
   :target: http://pytest.org
   :align: center
   :alt: pytest

------

.. image:: https://img.shields.io/pypi/v/pytest.svg
   :target: https://pypi.python.org/pypi/pytest
.. image:: https://img.shields.io/pypi/pyversions/pytest.svg
  :target: https://pypi.python.org/pypi/pytest
.. image:: https://img.shields.io/coveralls/pytest-dev/pytest/master.svg
   :target: https://coveralls.io/r/pytest-dev/pytest
.. image:: https://travis-ci.org/pytest-dev/pytest.svg?branch=master
    :target: https://travis-ci.org/pytest-dev/pytest
.. image:: https://ci.appveyor.com/api/projects/status/mrgbjaua7t33pg6b?svg=true
    :target: https://ci.appveyor.com/project/pytestbot/pytest

The ``pytest`` framework makes it easy to write small tests, yet
scales to support complex functional testing for applications and libraries.

An example of a simple test:

.. code-block:: python

    # content of test_sample.py
    def func(x):
        return x + 1

    def test_answer():
        assert func(3) == 5


To execute it::

    $ pytest
    ======= test session starts ========
    platform linux -- Python 3.4.3, pytest-2.8.5, py-1.4.31, pluggy-0.3.1
    collected 1 items

    test_sample.py F

    ======= FAILURES ========
    _______ test_answer ________

        def test_answer():
    >       assert func(3) == 5
    E       assert 4 == 5
    E        +  where 4 = func(3)

    test_sample.py:5: AssertionError
    ======= 1 failed in 0.12 seconds ========

Due to ``pytest``'s detailed assertion introspection, only plain ``assert`` statements are used. See `getting-started <http://pytest.org/latest/getting-started.html#our-first-test-run>`_ for more examples.


Features
--------

- Detailed info on failing `assert statements <http://pytest.org/latest/assert.html>`_ (no need to remember ``self.assert*`` names);

- `Auto-discovery
  <http://pytest.org/latest/goodpractices.html#python-test-discovery>`_
  of test modules and functions;

- `Modular fixtures <http://pytest.org/latest/fixture.html>`_  for
  managing small or parametrized long-lived test resources;

- Can run `unittest <http://pytest.org/latest/unittest.html>`_ (or trial),
  `nose <http://pytest.org/latest/nose.html>`_ test suites out of the box;

- Python2.6+, Python3.3+, PyPy-2.3, Jython-2.5 (untested);

- Rich plugin architecture, with over 150+ `external plugins <http://pytest.org/latest/plugins.html#installing-external-plugins-searching>`_ and thriving community;


Documentation
-------------

For full documentation, including installation, tutorials and PDF documents, please see http://pytest.org.


Bugs/Requests
-------------

Please use the `GitHub issue tracker <https://github.com/pytest-dev/pytest/issues>`_ to submit bugs or request features.


Changelog
---------

Consult the `Changelog <http://pytest.org/latest/changelog.html>`_ page for fixes and enhancements of each version.


License
-------

Copyright Holger Krekel and others, 2004-2016.

Distributed under the terms of the `MIT`_ license, pytest is free and open source software.

.. _`MIT`: https://github.com/pytest-dev/pytest/blob/master/LICENSE