Unittest-discover:迅速なインスタンスロード方式
前述したように、テスト組織のテストキットについて理解し、使用例を一括して検索し、キットのローダを生成しました.
一方、unittestのローダには、より編集されたインスタンスロード方法discover()も提供されている.
discover()は、TestLoaderでテストディレクトリを指定し、そのディレクトリとサブディレクトリの下にあるすべての検索ルールに合致するすべてのテスト・インスタンスを検索し、テスト・スイートを構築するために使用されます.で検索されたテストディレクトリ のサブディレクトリには、 である必要があります.は検索規則を指定し、 とする.使用例ファイルの使用例は、 でなければならない.
やはり前の例では、ここではサブディレクトリsubを新規作成しただけです.test、test_b入れました:
各ファイルのコードが不明な場合は、前のセクションを参照してください.
discoverを使用してtest_を検索するdemoディレクトリの下のすべてのテスト例は、discover()をrunに書きます.pyファイルにあります.注意してpyはtest_demoディレクトリの下、sub_test平級.
discover()関数を使用するには、2つのパラメータを指定する必要があります. start_dir:検索の開始ディレクトリを指定します.ここには相対パス と書かれています. pattern:検索ルールを指定し、デフォルトは を表す. を表す. を表す.
実行効果はtest_が見つかりますdemoの下のすべてのテスト例.
実際に使用する場合、発煙テストに使用する必要がある使用例にsmokeの文字をすべて付けるなど、テストファイルの名前にいくつかのルールを設定することができ、発煙テストを実行するときに
ここで特に、discoverは、ASCIIコードに基づくソート規則( start_によるとdirは、ディレクトリまたはテストファイル にかかわらず、ディレクトリ内の名前の順序を開始する.ディレクトリにサブディレクトリがある場合は、名前順に上位の を探し続けます.ファイル中のテストクラス名による順序 クラスのメソッド名による順序 したがって、ロード順序は
例のtest_demoでのロード順序:
先sub_testディレクトリのtest_b.pyのテスト例、test_a.pyのテスト例.なぜならsub_testとtest_a.py比較の場合、
一方、unittestのローダには、より編集されたインスタンスロード方法discover()も提供されている.
discover()は、TestLoaderでテストディレクトリを指定し、そのディレクトリとサブディレクトリの下にあるすべての検索ルールに合致するすべてのテスト・インスタンスを検索し、テスト・スイートを構築するために使用されます.
__init__.py
(空のファイルでよい)が含まれている必要があります.つまり、サブディレクトリはパケット*
をワイルドカードtest
で始まるやはり前の例では、ここではサブディレクトリsubを新規作成しただけです.test、test_b入れました:
+ test_demo
- add.py add()
- test_a.py TestAddOne ,
+ sub_test
- test_b.py TestAddTwo ,
- __init__.py
- run.py
各ファイルのコードが不明な場合は、前のセクションを参照してください.
discoverを使用してtest_を検索するdemoディレクトリの下のすべてのテスト例は、discover()をrunに書きます.pyファイルにあります.注意してpyはtest_demoディレクトリの下、sub_test平級.
run.py
import unittest
tests = unittest.defaultTestLoader.discover(
start_dir='.', # =>
pattern='test*.py' # =>
)
runner = unittest.TextTestRunner()
runner.run(tests)
discover()関数を使用するには、2つのパラメータを指定する必要があります.
.
、現在のファイルがあるディレクトリtest*.py
です.ここで*
はワイルドカードとして使用され、任意の数の任意の文字を表すことができます.test*.py
は、検索ファイル名がtestで始まるすべてのファイル*test*.py
は、検索ファイル名がtestを含むすべてのファイルtest*.py
は、testで終わるファイル名を検索するすべてのファイル実行効果はtest_が見つかりますdemoの下のすべてのテスト例.
実際に使用する場合、発煙テストに使用する必要がある使用例にsmokeの文字をすべて付けるなど、テストファイルの名前にいくつかのルールを設定することができ、発煙テストを実行するときに
*smoke*.py
と一致して実行することができます.ここで特に、discoverは、ASCIIコードに基づくソート規則(
- -
)であり、次に、使用例を以下の順序で検索してロードする. - - -
です.すべてのロード順序はASCIIコードのソート規則に従っている( - -
).例のtest_demoでのロード順序:
+ test_demo
- add.py add()
- test_a.py TestAddOne ,
+ sub_test
- test_b.py TestAddTwo ,
- __init__.py
- run.py
先sub_testディレクトリのtest_b.pyのテスト例、test_a.pyのテスト例.なぜならsub_testとtest_a.py比較の場合、
s
はt
の前にあります.