現在、会社のビルド スクリプトの単体テストをいくつか実装しています。肥大化を解消し、新しいテストの実装を少し簡単にするために、すべてのテスト クラスをBasicTest
、PyUnit の TestCase から継承されたカスタム サブクラスから継承するようにしています。
現在、すべてのテストが利用する 2 つの関数がありますBasicTest
: コンストラクター (ただし、将来的には明らかに上書きされる可能性があります) と、runTest()
値が渡されない場合にスーパーのコンストラクターが使用するデフォルトのメソッド名であるメソッド (たとえばBasicTest()
、テストを作成します)runTest()
呼び出されたときにメソッドを実行しBasicTest('Foo')
ますが、メソッドを使用しFoo()
ます)。
runTest()
呼び出された継承オブジェクトから可能なすべてのテストを単純に実行したいと思います。ただし、サブクラスでrunTest()
のみ定義されBasicTest
、継承されるため、サブクラスのすべてのメソッドをスーパーから動的に呼び出す方法を探しています。これがOOプログラミングのルールに違反していることはわかっていますが、私が見る限り、Pythonはそもそもルールに従うものではありませんでした:)
わかりやすくするために、以下に私の意図を示します。
runTest()
サブクラス オブジェクトから呼び出され、そのオブジェクトのメソッドのみを処理したい。SubclassTest()
メソッドTestParse()
とがあるとしましょうTestExec()
。私はそれが欲しい:
sub = SubClassTest()
sub.runTest()
とを実行TestParse()
しますTestExec()
が、メソッドをオーバーライドせずにrunTest()
で定義して継承する必要があります。BasicTest