У меня есть простой класс, который получает большинство своих аргументов через init, который также запускает множество частных методов, которые выполняют большую часть работы. Вывод доступен либо через доступ к переменным объекта, либо через открытые методы.
Вот проблема - я бы хотел, чтобы моя инфраструктура unittest напрямую вызывала закрытые методы, вызываемые init с разными данными, без прохождения init.
Какой лучший способ сделать это?
До сих пор я проводил рефакторинг этих классов, чтобы init делал меньше, а данные передавались отдельно. Это облегчает тестирование, но я думаю, что удобство использования класса несколько ухудшается.
РЕДАКТИРОВАТЬ: Пример решения на основе ответа Игнасио:
import types
class C(object):
def __init__(self, number):
new_number = self._foo(number)
self._bar(new_number)
def _foo(self, number):
return number * 2
def _bar(self, number):
print number * 10
#--- normal execution - should print 160: -------
MyC = C(8)
#--- testing execution - should print 80 --------
MyC = object.__new__(C)
MyC._bar(8)