Могу ли я выполнить модульное тестирование внутренней функции в python? - PullRequest
8 голосов
/ 26 января 2010

Есть ли способ написать unittests или doctests для innerfunc?

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

Ответы [ 2 ]

7 голосов
/ 26 января 2010

Только если вы предоставляете способ извлечения самого объекта внутренней функции, например

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

Если ваша внешняя функция настаивает на том, чтобы скрыть внутреннюю функцию целиком внутри себя (никогда не позволяя ей просачиваться наружу, когда для этого должным образом ее уговаривают), ваши модульные тесты не в силах победить эту сильную заявку на экстремальную и полную конфиденциальность ;-).

4 голосов
/ 04 октября 2010

Это на самом деле старая открытая проблема Python:

Существует патч-кандидат (с 2007 года), который позволяет doctest находить вложенные функции, но кто-то, вероятно, должен нажать эту кнопку.

...