0

KentBeckの著書TestDrivenDevelopment Chapter 18の次のPythonコードについて考えてみます。ここでは、彼が単体テストのフレームワークを構築しています。

class TestCaseTest(TestCase):
    def testRunning(self):
       test= WasRun("testMethod")
       assert(not test.wasRun)
       test.run() // Here run() is called once
       assert(test.wasRun)
  TestCaseTest("testRunning").run()//Here run() is called again

基本クラスの実装はTestCase次のようになります。

TestCase
 def __init__(self, name):
    self.name= name
def  run(self):
    method = getattr(self, self.name)
    method()
  1. run()上記のコードスニペットでメソッドが2回呼び出されるのはなぜですか?
  2. そして、誰がいつメソッドを呼び出していtestRunning()ますか?ここではメソッドを定義しているだけですが、誰もこのメソッドを呼び出していないようです。

PS:私はJavaのバックグラウンドを持っており、Python構文自体にはあまり詳しくありません。

4

1 に答える 1

1

あなたが話している本にアクセスできないので、あなたが投稿したコードスニペットを削除します。

2つの異なるオブジェクトのrun()メソッドが呼び出されているようです。1つはTestCaseTestクラス、もう1つはWasRunクラス(またはWasRunという名前の関数が返すもの)です。

testRunning()を呼び出しているのは、TestCaseTestオブジェクトで.run()が呼び出され、これはおそらくスーパークラスTestCaseのメソッドです。TestCaseでrun()を検索し、そこでself.testRunning()が呼び出されているかどうかを確認します。

于 2013-03-24T15:47:25.897 に答える