python – 在不运行__init__的情况下测试实例方法的最佳方法
发布时间:2020-12-20 11:13:47 所属栏目:Python 来源:网络整理
导读:我有一个简单的类,通过init获取大部分参数,它还运行各种私有方法来完成大部分工作.输出可通过访问对象变量或公共方法获得. 这就是问题 – 我希望我的unittest框架能够直接调用init调用的私有方法,而不需要通过init. 最好的方法是什么? 到目前为止,我一直在
我有一个简单的类,通过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) 解决方法
对于新式类,请调用
object.__new__() ,将该类作为参数传递.对于旧式类,调用
types.InstanceType() 将类作为参数传递.
import types class C(object): def __init__(self): print 'init' class OldC: def __init__(self): print 'initOld' c = object.__new__(C) print c oc = types.InstanceType(OldC) print oc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |