Repolode
pytest-dev

pytest-dev/pytest-randomly

テスト順をランダムにシャッフルし、乱数シードをリセットして、順序やランダムデータに起因する失敗を再現できるpytestプラグイン。

スター
724
フォーク
39
未解決の Issue
5
最終コミット
4 日前

これは何?

pytest-randomlyは、Pythonのテストフレームワークpytest用のプラグインです。デフォルトでは、モジュール、クラス、個々の関数の順にテストをシャッフルし、テスト間に隠れた依存関係がないか見つけやすくします。

各テスト実行時にはベースとなる乱数シードが表示されます。このシードを--randomly-seedに渡すか、値にlastを指定すると、同じ順序とデータで再実行できます。各テストのsetup、run、teardownの開始時に、プラグインはベースシードとテストIDからPythonのグローバル乱数シードをリセットするため、ランダムデータに依存するテストも再現可能です。factory boy、Faker、Model Bakery、NumPyのレガシー乱数生成器、Polyfactoryの乱数状態もリセットします。

どちらの動作もフラグで無効にできます。また、pytest_randomly.random_seederエントリーポイントを使って、独自の乱数生成器にも対応できます。pytest-xdistと併用できます。

主な機能

  • 01モジュール、クラス、関数の単位でテスト順をシャッフル
  • 02--randomly-seedでシードを指定でき、'last'を指定すると前回のシードを再利用
  • 03各テストのsetup、run、teardownの前に乱数シードをリセット
  • 04factory boy、Faker、Model Bakery、NumPy、Polyfactoryの乱数状態をリセット
  • 05エントリーポイント経由で独自の乱数生成器に対応
  • 06pytest-xdistと併用可能

ユースケース

  • 別のテストが先に実行された場合にだけ成功するテストを見つける
  • テスト順やランダムなテストデータが原因の不安定な失敗を再現する
  • factoryで生成したデータを使う、再現性が必要なテストを書く
  • 同じシードで単一モジュールを再実行し、テスト間の状態汚染を調査する

クイックスタート

  1. 1

    pipでプラグインをインストールします

    python -m pip install pytest-randomly
  2. 2

    pytestを実行すると、プラグインがテストを自動的にシャッフルし、シード値を表示します

    pytest

使う前に知っておきたいこと

  • Python 3.11〜3.15とpytestテストランナーが必要です。

収録されている特集

トピック

#pytest#testing#python#test-ordering#random-seed#test-isolation

よくある質問

pytest-randomly とは?
テスト順をランダムにシャッフルし、乱数シードをリセットして、順序やランダムデータに起因する失敗を再現できるpytestプラグイン。 pytest-randomlyは、Pythonのテストフレームワークpytest用のプラグインです。デフォルトでは、モジュール、クラス、個々の関数の順にテストをシャッフルし、テスト間に隠れた依存関係がないか見つけやすくします。
pytest-randomly は無料で使えますか?ライセンスは?
pytest-randomly は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
pytest-randomly は今もメンテナンスされていますか?
活発にメンテナンス中。pytest-randomly の最終コミットは 2026年11月2日 です。
pytest-randomly は何に使えますか?
別のテストが先に実行された場合にだけ成功するテストを見つける テスト順やランダムなテストデータが原因の不安定な失敗を再現する factoryで生成したデータを使う、再現性が必要なテストを書く 同じシードで単一モジュールを再実行し、テスト間の状態汚染を調査する
pytest-randomly のインストール方法は?
pipでプラグインをインストールします: python -m pip install pytest-randomly pytestを実行すると、プラグインがテストを自動的にシャッフルし、シード値を表示します: pytest
pytest-randomly はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/pytest-dev/pytest-randomly

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

最近のコード変更の影響を受けるテストだけを再実行し、オプションで継続的な監視モードも利用できるpytestプラグインです。

開発ツール#pytest#testing#python
1034+2 今週87PythonMIT活発にメンテナンス更新 4 日前