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