python unittest - 如何引用可调用函数

时间:2012-11-30 21:31:35

标签: python unit-testing

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

(我会把这里作为不做的参考。)

GOOD :编写模块级功能或接受无法测试嵌套