pytest: プログラムをもっと良いものに

pytest フレームワークは、小さく読みやすいテストを書くのを容易にし、アプリケーションやライブラリの複雑な機能テストをサポートするようにスケールできます。

pytest の要件: Python 3.8+ または PyPy3。

PyPI パッケージ名: pytest

簡単な例

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


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

実行するには:

$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-8.x.y, pluggy-1.x.y
rootdir: /home/sweet/project
collected 1 item

test_sample.py F                                                     [100%]

================================= FAILURES =================================
_______________________________ test_answer ________________________________

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

test_sample.py:6: AssertionError
========================= short test summary info ==========================
FAILED test_sample.py::test_answer - assert 4 == 5
============================ 1 failed in 0.12s =============================

pytest の詳細なアサーションイントロスペクションにより、単純な assert ステートメントのみが使用されます。 pytest の基本的な使い方については Get started を参照してください。

特徴

  • 失敗した assert ステートメント の詳細情報 (self.assert* 名を覚える必要はありません)

  • テストモジュールと関数の 自動検出

  • 小規模またはパラメータ化された長期テストリソースを管理するための モジュラーフィクスチャ

  • 箱から出してすぐに unittest (トライアルを含む) テストスイートを実行できます

  • Python 3.8+ または PyPy 3

  • 1300 以上の 外部プラグイン と活気に満ちたコミュニティを持つ豊富なプラグインアーキテクチャ

ドキュメント

  • はじめに - pytest をインストールし、わずか 20 分で基本を把握します

  • ハウツー - 幅広いユースケースとニーズをカバーするステップバイステップガイド

  • リファレンス - 完全な pytest API リファレンス、プラグインのリストなどを含みます

  • コンセプト - 背景、主要なトピックの議論、高度な質問への回答

バグ/リクエスト

バグの報告や機能のリクエストには、GitHub イシュートラッカー を使用してください。

pytest をサポートする

Open Collective は、オープンで透明なコミュニティのためのオンライン資金調達プラットフォームです。 資金を集め、財務を完全に透明に共有するためのツールを提供します。

プロジェクトに直接一度限りまたは毎月の寄付を行いたい個人や企業にとって、選択肢となるプラットフォームです。

pytest collective の詳細をご覧ください。

企業向け pytest

Tidelift サブスクリプションの一部として利用可能です。

pytest および他の数千のパッケージのメンテナーは、Tidelift と協力して、アプリケーションの構築に使用するオープンソース依存関係の商業サポートとメンテナンスを提供しています。 時間を節約し、リスクを軽減し、コードの健全性を向上させながら、使用する正確な依存関係のメンテナーに支払います。

詳細はこちら

セキュリティ

pytest はこれまでセキュリティ脆弱性と関連付けられたことはありませんが、いずれにせよ、セキュリティ脆弱性を報告するには Tidelift セキュリティ連絡先 を使用してください。 Tidelift は修正と開示を調整します。