0

考虑以下来自 Kent Beck 的书Test Driven Development 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. 谁在调用该方法testRunning(),何时调用?这里只定义了方法,但似乎没有人调用这个方法。

PS:我来自 Java 背景,对 Python 语法本身不太熟悉。

4

1 回答 1

1

我无法访问您正在谈论的书,因此我将关闭您发布的代码片段。

看起来正在调用两个不同对象上的 run() 方法——一个是 TestCaseTest 类,一个是 WasRun 类(或任何名为 WasRun 的函数返回)。

至于谁在调用 testRunning(),在 TestCaseTest 对象上调用了 .run(),这可能是来自超类 TestCase 的方法。在 TestCase 中查找 run() 并查看 self.testRunning() 是否在那里被调用。

于 2013-03-24T15:47:25.897 回答