我们这样做.
class FakeSomethingOrOther( object ):
def __init__( self ):
self._count_me= 0
def method_required_by_test( self ):
return self.special_answer_required_by_test
def count_this_method( self, *args, *kw ):
self._count_me += 1
Run Code Online (Sandbox Code Playgroud)
设置它们并不需要太多
class TestSomething( unittest.TestCase ):
def setUp( self ):
self.requiredSomething = FakeSomethingOrOther()
self.requiredSomething.attribute_required_by_test= 12
self.requiredSomething.special_answer_required_by_test = 32
self.to_be_tested = ActualThing( self.requiredSomething )
Run Code Online (Sandbox Code Playgroud)
由于您不需要复杂的静态检查类型声明,因此您需要的只是具有正确方法的类.您可以轻松地强制测试属性值.
这些东西真的很容易写.您不需要很多支持或库.
在其他语言(即Java)中,很难编写一些能够通过静态编译时检查的东西.由于Python没有这个问题,因此为了测试目的而编写模拟或虚假实现是微不足道的.