テストローダーの便利な場所のように思えます。
http://docs.python.org/library/unittest.html#unittest.TestLoader.loadTestsFromNameをチェックしてください
適切な命名規則をいくつか提供すれば、おそらくテストの命名規則に基づいてスイートを作成できます。
AIX、Linux (すべて)、および 32 ビット Windows で実行されるテスト A、Windows 64、Linux 64、および Solaris で実行されるテスト B、HPUX 以外のすべてで実行されるテスト C、およびすべてで実行されるテスト D があるとします。 ...これにはどのような命名規則がありますか?
class TestA_AIX_Linux2_Win32( unittest.TestCase ):
class TestB_Win64_Linux64_Solaris( unittest.TestCase ):
class TestC_AIX_Linux2_Win32_Win64_Linux64_Solaris( unittest.TestCase ):
class TestD_All( unittest.TestCase ):
難しいのは、「HP/UX ではない」ということです。負の論理を避けることで、あなたの人生はよりシンプルになります。この場合、HP/UX 以外のすべての OS をリストするだけです。リストはかなり短く、ゆっくりと成長します。
「すべて」のテストは、完全なスイートを作成するために、現在のプラットフォームのテストのリストとマージされた単なる個別のテキスト検索です。
次のようなものを試すことができます
class TextC_XHPUX( unittest.TestCase ):
通常、テキスト マッチング ルールは"_someOSName"
; "_X"
あなたの例外は、名前をいじる奇妙なテキストフィルターになります。
「OS の肯定的なリストを作成することはできません。新しい OS を追加するとどうなるでしょうか?すべてのテストの名前を変更して、それを明示的に含める必要がありますか?」はい。新しいオペレーティング システム市場の発展は遅く、管理はそれほど難しくありません。
別の方法として、各クラス (つまり、クラス レベルの関数) またはデコレータ内に情報を含め、クラス レベルの関数を評価するカスタマイズされたクラス ローダーを使用することもできます。