pytest README

The project's README from github.com/pytest-dev/pytest. As one markdown file: README.md.

.. image:: https://github.com/pytest-dev/pytest/raw/main/doc/en/img/pytest_logo_curves.svg :target: https://docs.pytest.org/en/stable/ :align: center :height: 200 :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/main/graph/badge.svg :target: https://codecov.io/gh/pytest-dev/pytest :alt: Code coverage Status

.. image:: https://github.com/pytest-dev/pytest/actions/workflows/test.yml/badge.svg :target: https://github.com/pytest-dev/pytest/actions?query=workflow%3Atest

.. image:: https://results.pre-commit.ci/badge/github/pytest-dev/pytest/main.svg :target: https://results.pre-commit.ci/latest/github/pytest-dev/pytest/main :alt: pre-commit.ci status

.. image:: https://www.codetriage.com/pytest-dev/pytest/badges/users.svg :target: https://www.codetriage.com/pytest-dev/pytest

.. image:: https://readthedocs.org/projects/pytest/badge/?version=latest :target: https://pytest.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

.. image:: https://img.shields.io/badge/Discord-pytest--dev-blue :target: https://discord.com/invite/pytest-dev :alt: Discord

.. image:: https://img.shields.io/badge/Libera%20chat-%23pytest-orange :target: https://web.libera.chat/#pytest :alt: Libera chat

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

Thanks to pytest's detailed assertion introspection, you can simply use plain assert statements. See getting-started <https://docs.pytest.org/en/stable/getting-started.html#our-first-test-run>_ for more examples.

Features

Documentation

For full documentation, including installation, tutorials and PDF documents, please see https://docs.pytest.org/en/stable/.

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/stable/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 ^^^^^^^^

If you have found an issue that you believe is a security vulnerability, please do not create an issue -- instead, report it via a new security advisory <https://github.com/pytest-dev/pytest/security/advisories/new>__.

License

Copyright Holger Krekel and others, 2004.

Distributed under the terms of the MIT_ license, pytest is free and open source software.

.. _MIT: https://github.com/pytest-dev/pytest/blob/main/LICENSE

pytest (pytest-dev/pytest)

Searching Database…

14.6K ·GitHub
这是做什么的?pytest 是一个 Python 测试框架,让你轻松编写小型测试,同时也能扩展到应用程序和库的复杂功能测试。
pytest 是我导入的库,还是命令行工具?它是一个带命令行运行器的框架:你在普通的 .py 文件里写测试函数,然后用 'pytest' 命令启动——它会自动发现测试模块和函数。
我该怎么上手?按照入门指南安装 pytest,添加一个带有普通 'assert' 断言的测试文件,然后运行 '$ pytest'——结果会直接打印到终端。
有没有什么前提条件,比如特定的 Python 版本?只需要一个解释器:Python 3.10+ 或 PyPy3。运行第一个测试不需要其他任何东西。
它在 Windows、macOS 和 Linux 上运行效果一样吗?是的——README 没有设置任何操作系统限制,所以任何能运行 Python 的环境都能运行 pytest,各平台的命令也完全一样。
pytest 可以免费使用吗,包括商业用途?可以——它是基于 MIT 许可证的免费开源软件。需要官方支持的公司还可以通过 Tidelift Subscription 购买商业支持。
我需要像 unittest 的 assertEqual 那样的特殊断言方法吗?不需要——得益于 pytest 详细的断言内省机制,你直接写普通的 'assert' 语句就行。测试失败时会显示真实的值,比如 'assert 4 == 5' 加上 '+ where 4 = inc(3)'。
pytest 能运行我已有的 unittest 测试套件吗?能——它开箱即用就能运行 unittest(或 trial)测试套件,所以你可以逐步采用它,不用重写测试。
fixtures 是什么?模块化的 fixture 是 pytest 管理测试资源的方式——小到简单资源,大到参数化的长生命周期资源——让准备代码保持整洁,并可在多个测试间复用。
插件生态有多大?非常大:pytest 拥有丰富的插件架构,有超过 1300 个外部插件和活跃的社区。
What are similar projects?ava, pest, phpunit, enzyme, testify, truffle, vitest, SeleniumBase
Creator
pytest-dev
Size
41.1 MB
Stars
14.6K
Age
11y
Commits · 90 Days