1. ホーム
  2. django

[解決済み] django のユニットテストを複数のファイルに分散させるには?

2022-07-04 19:12:05

質問

  • Python-djangoのアプリケーションを持っています。
  • を使っています。 ユニットテストフレームワーク
  • テストは、モジュールディレクトリ内の "tests.py" ファイルに配置されています。
  • を経由してテストを実行しています。 ./manage.py test app

今は...

  • があります。 tests.py ファイルがかなり大きく/複雑/面倒になってきた
  • を壊したいと思います。 tests.py より小さなテストの集合体として...

どうやって?

どのように解決するのか?

Django 1.6 では動作が変わったので、パッケージを作成する必要はなくなりました。ただ、ファイル名を test*.py .

Django 1.7 ドキュメントより

テストを実行するとき、テストユーティリティのデフォルトの動作は すべてのテストケース (つまり unittest.TestCase のサブクラス) を見つけることです。 のサブクラス)を見つけ、それらのテストケースからテストスイートを自動的に構築します。 を自動的に構築し、そのスイートを実行します。

から Django 1.6 ドキュメント ,

テストの発見は、unittest モジュールの組み込みテスト を発見することに基づいています。デフォルトでは、これは現在の作業ディレクトリの下にある "test*.py" という名前の任意のファイルからテストを検出します。 "test*.py "と名付けられたファイル内のテストを検出します。

以前の動作 Django 1.5 ドキュメントより :

テストを実行するとき、テストユーティリティのデフォルトの動作は 全てのテストケース(つまり、unittest.TestCaseのサブクラス)をmodels.pyとtests.pyから探し出し のサブクラス)を見つけ、それらのテストケースからテストスイートを自動的に構築し、そのスイートを実行します。 これらのテストケースからテストスイートを自動的に構築し、そのスイートを実行します。

モジュールのためのテストスイートを定義する2つ目の方法があります。 もし models.py か tests.py のどちらかで suite() と呼ばれる関数を定義していれば、 Django のテストランナーはその関数を使ってテストスイートを実行します。 Django のテストランナーはその関数を使って、そのモジュールのテストスイートを構築し ます。 という関数を定義すると、Django のテストランナーはその関数を使ってそのモジュー ルのテストスイートを構築します。これは、ユニットテストのための推奨される構成に従います。 テストに推奨される構成に従います。複雑なテストスイートを構築する方法の詳細については、 Python のドキュメントを参照してください。 複雑なテストスイートを構築する方法の詳細については、 Python のドキュメントを参照して下さい。