【问题标题】:Can I unit test an inner function in python?我可以在 python 中对内部函数进行单元测试吗?
【发布时间】:2010-01-26 00:57:06
【问题描述】:

有没有办法为innerfuncunittestsdoctests

def outerfunc():
    def innerfunc():
        do_something()
    return innerfunc()

【问题讨论】:

  • 您通常不会这样做:API 是封闭函数,内部函数类似于函数中的命名代码块。您不直接测试它们,就像您不直接测试函数内的单个循环一样;您测试执行代码块的函数的输入。

标签: python unit-testing doctest


【解决方案1】:

仅当您提供一种方法来提取内部函数对象本身时,例如

def outerfunc(calltheinner=True):
    def innerfunc():
        do_something()
    if calltheinner:
        return innerfunc()
    else:
        return innerfunc

如果您的外部函数坚持将内部函数完全隐藏在自身内部(在适当的劝说下绝不让它渗透到外部),那么您的单元测试就无法击败这种对极端和完全隐私的强烈要求;-)。

【讨论】:

    【解决方案2】:

    这实际上是一个古老的 Python 开放问题:

    有一个候选补丁(从 2007 年开始)可以让 doctest 找到嵌套函数,但可能需要有人推动这个。

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      相关资源
      最近更新 更多