Как я могу проверить приватный метод python (да, у меня есть причина для их тестирования) - PullRequest
0 голосов
/ 27 ноября 2018

Я ищу самый чистый способ написания модульных тестов для закрытых методов Python.

Я знаю, что обычно вы не хотите тестировать частные методы, но мы унаследовали гигантского бегемота из файла Python.который нам нужно реорганизовать в более обслуживаемые модули.Мы не понимаем его логику, но знаем, что он работает, и поэтому стараемся использовать TDD, чтобы гарантировать, что наш рефакторинг не нарушает код, и в настоящее время 90% кода находится в закрытых методах, а модуль делает слишком много длянадежный тест это все чисто путем тестирования черного ящика.Я ожидаю, что напишу несколько тестов, которые будут удалены после завершения рефакторинга, но сейчас я хотел бы иметь возможность подключиться к некоторым частным методам, чтобы проверить их, чтобы повысить уверенность в том, что мой рефакторинг не нарушил логику ключей.когда я перехожу к более удобному (и тестируемому) макету.

1 Ответ

0 голосов
/ 27 ноября 2018

В python "приватные" методы являются только признаком для разработчика, что они должны быть приватными, фактически вы можете получить доступ к каждому методу.Когда вы начинаете имя метода с двух подчеркиваний, Python делает какое-то имя «волшебство», чтобы сделать его более трудным для доступа.На самом деле он не требует ничего, как это делают другие языки.

Допустим, у нас есть следующий класс:

class Foo:
 def __bar(self, arg):
     print(arg)
 def baz(self, arg):
     self.__bar(arg)

Чтобы получить доступ к "приватному" методу __bar, попробуйте это:

f = Foo()
f._Foo__bar('a')

Подробнее об идентификаторах можно найти в документах

Надеюсь, это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...