Go to file
Bruno Oliveira 70bdacf01a Fix collection example docs 2018-08-26 12:58:47 +00:00
.github Manage GH labels using the new 'labels' tool 2018-07-14 10:12:52 -03:00
bench py.builtin.exec_ => six.exec_ 2018-08-22 23:00:06 -07:00
changelog Preparing release version 3.7.3 2018-08-26 12:43:43 +00:00
doc/en Fix collection example docs 2018-08-26 12:58:47 +00:00
extra sort out flake8 issues and unicode name usage 2018-05-23 18:12:04 +02:00
scripts Enforce that changelog files are .rst 2018-08-01 15:22:43 -07:00
src Collect tests from __init__.py files if they match 'python_files' 2018-08-25 11:18:52 -03:00
testing Merge pull request #3873 from nicoddemus/sys-path-fix 2018-08-26 08:53:57 -03:00
.coveragerc Remove code for unsupported Python versions 2017-10-10 08:54:56 +03:00
.gitattributes Use "union" merge strategy for CHANGELOG 2015-08-10 19:27:22 -03:00
.gitignore switch to src layout 2018-05-26 09:10:38 +02:00
.pre-commit-config.yaml Use more flexible `language_version: python3` 2018-08-20 06:27:35 -07:00
.travis.yml Travis: use TOXENV=linting for linting stage 2018-08-25 23:14:09 +02:00
AUTHORS resolving Issue #3824 - expanding docs 2018-08-22 15:37:35 +02:00
CHANGELOG.rst Tweak CHANGELOG for 3.7.3 2018-08-26 09:46:46 -03:00
CITATION Fix linting issues 2018-07-14 16:35:33 +01:00
CONTRIBUTING.rst Improve contributing instructions regarding black/linting 2018-06-11 20:49:25 -03:00
HOWTORELEASE.rst Revamp the release script: drop invoke and use tox directly 2018-07-14 11:35:37 -03:00
LICENSE Update copyright date in LICENSE and README.rst 2017-06-13 14:58:07 +02:00
README.rst Adjust copyright in README 2018-07-06 21:03:27 -03:00
appveyor.yml Merge remote-tracking branch 'upstream/master' into release-3.7.0 2018-07-30 20:12:30 +00:00
pyproject.toml Use "pytest" on the CHANGELOG 2018-07-27 09:21:18 -03:00
setup.cfg restore setuptools_scm write_to usage 2017-04-23 16:59:08 +02:00
setup.py fix #3757 by pinning to pathlib2 that supports __fspath__ 2018-08-01 11:45:39 +02:00
tox.ini Merge pull request #3877 from blueyed/codecov-master 2018-08-26 09:19:03 -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.org/project/pytest/

.. image:: https://img.shields.io/conda/vn/conda-forge/pytest.svg
    :target: https://anaconda.org/conda-forge/pytest

.. image:: https://img.shields.io/pypi/pyversions/pytest.svg
    :target: https://pypi.org/project/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

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
  :target: https://github.com/ambv/black

.. image:: https://www.codetriage.com/pytest-dev/pytest/badges/users.svg
    :target: https://www.codetriage.com/pytest-dev/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;

- Python 2.7, Python 3.4+, PyPy 2.3, Jython 2.5 (untested);

- Rich plugin architecture, with over 315+ `external plugins <http://plugincompat.herokuapp.com>`_ 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-2018.

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