0
考慮以下來自Kent Beck的書中的Python代碼:Test Driven Development第18章他正在構建單元測試框架。爲什麼run()方法調用兩次來運行測試用例?
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()
- 爲什麼在上面的代碼片段被調用兩次
run()
方法? - 誰在調用方法
testRunning()
什麼時候?這裏只是定義方法,但似乎沒有人調用這種方法。
P.S:我來自Java背景,對Python語法本身並不熟悉。
我已經添加了基準類的代碼供您細讀。看來我現在明白了。運行方法的最後一行是關鍵。 – Inquisitive 2013-03-24 15:53:38
好吧,所以有一個方法是基於self.name屬性檢索和運行的。運行哪種方法取決於TestCase如何初始化,如果self.name是「hello」,那麼調用的方法是self.hello()。很高興聽到它在上下文中對你有意義。 – svk 2013-03-24 16:06:55
順便說一句,這是在Python中稱爲*可插入選擇器*的機制? – Inquisitive 2013-03-24 16:12:37