1

好的,我知道这很明显,但我不知道如何为内部函数编写测试。这是一个简单的代码来说明这个问题。

def high(x, y):
    def low(x):
        return x*2
    return y*low(x)

class TestHigh(unittest.TestCase):
    def test_high(self):
        self.assertEqual(high(1,2),4)

    def test_low(self):
        self.assertEqual(low(3),6)

结果是

Exception: NameError: global name 'low' is not defined

在“真实”情况下,我希望能够单独测试较低级别的功能,以确保执行所有路径,这在仅从较高级别进行测试时很麻烦。

4

3 回答 3

2

low 嵌套在 high 函数中,因此无法从函数外部访问它。您的功能的等价物是high(3,1)

于 2012-11-30T21:37:24.977 回答
2

您编写测试以确保公开可见的界面按照其规范执行。您不应尝试为未公开的内部功能编写测试。

如果您无法low()通过结果进行全面测试,high()那么未测试的部分对low()外界的任何事情都无关紧要。

于 2012-11-30T21:37:42.200 回答
1

:尝试创建一个类并将函数作为方法(或静态函数)添加到它。

(我将把它留在这里作为不做什么的参考。)

:编写模块级函数或接受如果嵌套它就无法测试它

于 2012-11-30T21:40:44.503 回答