Go to file
Ronny Pfannschmidt 6cfe087261 Merge pull request #2320 from pawelad/2239/exit-code-docs
Added 'Possible exit codes' section to docs (#2239)
2017-03-20 06:22:23 +01:00
.github Mention small doc fixes don't need tests/changelog entries in PR template 2016-10-05 15:36:38 -03:00
_pytest Change ValueError to io.UnsupportedOperation in capture.py. Resolves issue #2276 2017-03-14 18:55:58 -03:00
bench simplify internal pytester machinery 2014-10-06 13:37:57 +02:00
doc/en Added 'Possible exit codes' section to docs (#2239) 2017-03-19 18:34:43 +00:00
extra Adapt get_issues.py script for GitHub (instead of Bitbucket) 2016-03-28 20:00:57 +02:00
scripts Only execute "coveralls" toxenv on master once 2016-11-24 19:27:27 -02:00
testing Change ValueError to io.UnsupportedOperation in capture.py. Resolves issue #2276 2017-03-14 18:55:58 -03: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 Allow py37-nightly to fail on Travis 2017-03-04 07:17:39 -03:00
AUTHORS Added 'Paweł Adamczak' to AUTHORS 2017-03-19 18:38:41 +00:00
CHANGELOG.rst Move CHANGELOG entry for #2276 to 3.0.8 2017-03-14 18:58:28 -03:00
CONTRIBUTING.rst Add documentation building note. 2016-11-26 18:57:51 +01:00
HOWTORELEASE.rst Send only minor/major release announces to TIP mailing list 2016-09-02 12:27:06 -03:00
LICENSE Wrap lines at 79 characters 2016-02-16 19:14:55 +00:00
MANIFEST.in Only install pypy on AppVeyor for "pypy" tox-env 2016-11-12 20:20:59 -02:00
README.rst Use "inc" instead of "func" in the snipped on README and doc index 2016-11-27 15:49:39 -02:00
appveyor.yml Fix pytester internal plugin to work correctly with latest versions of zope.interface 2017-01-19 20:53:35 -02:00
pytest.py revert setuptools_scm addition introduced with f22d14b105 2015-09-17 12:58:04 +02:00
setup.cfg Ensure the LICENSE is included in built wheels 2017-01-10 19:25:57 +01:00
setup.py Add py36 identifier 2017-01-22 17:13:17 -07:00
tox.ini Attempt to clarify the confusion regarding __init__ files and unique test names 2017-03-09 20:41:33 -03:00

README.rst

.. image:: http://docs.pytest.org/en/latest/_static/pytest1.png
   :target: http://docs.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 inc(x):
        return x + 1

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


To execute it::

    $ pytest
    ============================= test session starts =============================    
    collected 1 items

    test_sample.py F

    ================================== FAILURES ===================================
    _________________________________ test_answer _________________________________

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

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


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


Features
--------

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

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

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

- Can run `unittest <http://docs.pytest.org/en/latest/unittest.html>`_ (or trial),
  `nose <http://docs.pytest.org/en/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://docs.pytest.org/en/latest/plugins.html#installing-external-plugins-searching>`_ and thriving community;


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

For full documentation, including installation, tutorials and PDF documents, please see http://docs.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://docs.pytest.org/en/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