【问题标题】:How do you unit test a nested function? [duplicate]如何对嵌套函数进行单元测试? [复制]
【发布时间】:2012-11-28 13:28:07
【问题描述】:

您将如何对以下示例中的嵌套函数 f1() 进行单元测试?

def f():
    def f1():
       return 1
    return 2

还是不应该嵌套需要测试的函数?

【问题讨论】:

  • @alemangui:谢谢!这回答了我的问题。
  • 我会把它作为答案:)

标签: python unit-testing nested-function


【解决方案1】:

this link 中也有类似的问题。但简短的回答:您不能从外部元素访问内部函数。

出于测试目的,也许另一种方法是将内部函数更改为私有外部函数?

【讨论】:

    【解决方案2】:

    你没有,因为你不能。

    您将不得不将单元测试限制在外部函数中,或者将内部函数移到别处。

    【讨论】:

      【解决方案3】:

      我也有同样的疑问,并找到了一种方法来测试内部函数。

      def outer():
          def inner():
              pass
      
          if __debug__:
              test_inner(inner)
              # return
      
      def test_inner(f):
          f() # this calls the inner function
      
      outer()
      

      基本上您可以将内部函数作为参数发送到外部并根据需要对其进行测试。当调用 outer() 时,您的测试将运行,并且由于它是一个闭包,它将保留外部函数的任何额外属性(如变量)。使用列表,您可以发送任意数量的函数。要忽略 if,一个选项是像这样运行代码:

      python -O code.py
      

      【讨论】:

      • 这是一个非常特殊的案例解决方案。考虑一个循环中的嵌套函数,访问外部函数的局部变量(嵌套函数更常见的用例,恕我直言)。
      • 这是一个好习惯吗?
      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 2019-08-22
      • 2021-09-29
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      相关资源
      最近更新 更多