我有一个简单的类,它通过init获取大部分参数,它还运行各种各样的私有方法来完成大部分工作。输出可以通过访问对象变量或公共方法获得。
这就是问题所在——我希望我的UnitTest框架可以直接用不同的数据调用init调用的私有方法——而不需要经过init。
最好的方法是什么?
到目前为止,我已经对这些类进行了重构,这样init就可以做得更少,并且可以单独传递数据。这使得测试变得容易,但我认为类的可用性会受到一些影响。
编辑:基于Ignacio答案的示例解决方案:
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)