Я пришел из мира Java, где вы можете скрыть переменные и функции, а затем выполнить отладочные тесты против них с помощью отражения. Я использовал вложенные функции, чтобы скрыть детали реализации моих классов, чтобы был видимым только публичный API. Я пытаюсь написать модульные тесты против этих вложенных функций, чтобы убедиться, что я не разбиваю их по мере развития. Я попытался назвать одну из вложенных функций, таких как:Выполнение модульных тестов по вложенным функциям
def outer():
def inner():
pass
outer.inner()
что приводит к сообщению об ошибке:
AttributeError: 'function' object has no attribute 'inner'
Есть ли способ для меня, чтобы писать тесты против этих вложенных функций? Если нет, есть ли способ вызвать имя munging для имен функций, как вы можете для переменных класса, префикс их __?
Как это ответить на вопрос? Существуют ли хорошие решения для изоляции таких внутренних функций для модульного тестирования или нет? Даже без доступа к внутреннему из внешнего функционального объекта такие, казалось бы, могут быть достигнуты с использованием парсера модулей python, ast или токенизатора, чтобы копить сам код. Очевидно, это легче сказать, чем кодировать. :-) – 2011-07-09 16:02:06
Он отвечает на вопрос, потому что один не проверяет * частные детали реализации. Вы можете полагаться на инструменты тестирования покрытия, чтобы сказать вам, если вы проверите публичный интерфейс, адекватно реализуйте частную реализацию. – SingleNegationElimination 2011-07-09 16:24:50