pytest

pytest是一个成熟的全功能Python测试工具,可帮助您编写更好的程序。(pytest is a mature full-featured Python testing tool that helps you write better programs.)

Github stars Tracking Chart

pytest框架可以轻松编写小型测试,然后进行扩展以支持应用程序和库的复杂功能测试。

一个简单测试的例子:

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


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

执行它::

$ 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 ===========================

由于pytest 的详细断言自省,所以只使用纯粹的assert语句。请参阅 入门 查看更多示例。

功能

  • 有关失败的断言语句的详细信息(无需记住self.assert *名称);
  • 自动发现测试模块和功能;
  • 用于管理小型或参数化长寿命测试资源的模块化夹具;
  • 可以运行unittest(或试用),开箱即用的鼻子测试套件;
  • Python 2.7,Python 3.4+,PyPy 2.3,Jython 2.5(未经测试);
  • 丰富的插件架构,超过315个外部插件和蓬勃发展的社区;

文档

有关完整文档(包括安装,教程和PDF文档),请参阅 http://docs.pytest.org

错误/请求

请使用 GitHub问题跟踪器提交错误或请求功能。

更新日志

请参阅 Changelog页面,以了解每个版本的修正和增强。

许可证

版权Holger Krekel和其他人,2004-2017。

根据 MIT 许可条款分发,pytest是免费的开源软件。

Overview

Name With Ownerpytest-dev/pytest
Primary LanguagePython
Program languagePython (Language Count: 2)
PlatformBSD, Linux, Mac, Solaris, Unix-like, Windows
License:MIT License
Release Count203
Last Release Name8.3.0.dev0 (Posted on )
First Release Name1.0.0b3 (Posted on )
Created At2015-06-15 20:28:27
Pushed At2024-04-28 18:52:29
Last Commit At
Stargazers Count11.4k
Watchers Count191
Fork Count2.5k
Commits Count15.9k
Has Issues Enabled
Issues Count5686
Issue Open Count787
Pull Requests Count4848
Pull Requests Open Count68
Pull Requests Close Count783
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

.. image:: https://docs.pytest.org/en/latest/_static/pytest1.png
:target: https://docs.pytest.org/en/latest/
: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://codecov.io/gh/pytest-dev/pytest/branch/master/graph/badge.svg
:target: https://codecov.io/gh/pytest-dev/pytest
:alt: Code coverage Status

.. image:: https://travis-ci.org/pytest-dev/pytest.svg?branch=master
:target: https://travis-ci.org/pytest-dev/pytest

.. image:: https://dev.azure.com/pytest-dev/pytest/_apis/build/status/pytest-CI?branchName=master
:target: https://dev.azure.com/pytest-dev/pytest

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/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 <https://docs.pytest.org/en/latest/getting-started.html#our-first-test-run>_ for more examples.

Features

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

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

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

  • Can run unittest <https://docs.pytest.org/en/latest/unittest.html>_ (or trial),
    nose <https://docs.pytest.org/en/latest/nose.html>_ test suites out of the box;

  • Python 3.5+ and PyPy3;

  • 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 https://docs.pytest.org/en/latest/.

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 <https://docs.pytest.org/en/latest/changelog.html>__ page for fixes and enhancements of each version.

Support pytest

Open Collective_ is an online funding platform for open and transparent communities.
It provides tools to raise money and share your finances in full transparency.

It is the platform of choice for individuals and companies that want to make one-time or
monthly donations directly to the project.

See more details in the pytest collective_.

.. _Open Collective: https://opencollective.com
.. _pytest collective: https://opencollective.com/pytest

pytest for enterprise

Available as part of the Tidelift Subscription.

The maintainers of pytest and thousands of other packages are working with Tidelift to deliver commercial support and
maintenance for the open source dependencies you use to build your applications.
Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use.

Learn more. <https://tidelift.com/subscription/pkg/pypi-pytest?utm_source=pypi-pytest&utm_medium=referral&utm_campaign=enterprise&utm_term=repo>_

Security
^^^^^^^^

pytest has never been associated with a security vulnerability, but in any case, to report a
security vulnerability please use the Tidelift security contact <https://tidelift.com/security>_.
Tidelift will coordinate the fix and disclosure.

License

Copyright Holger Krekel and others, 2004-2020.

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

To the top