2010-03-12 58 views
2

我要寻找蟒蛇磕碰库。一些可以用来制造假类/在我的单元测试方法..有一个简单的方法来实现它在Python ..Python库创建存根/虚假对象

感谢

PS:我不是在寻找嘲弄图书馆,在那里你会记录和重播期望。

Difference between mock and stubs

+0

“模仿对象总是使用动作验证,存根可以去任何一种方式。”所以一个存根是一个模拟?当“存根”可以与嘲笑做同样的事情时,说“不嘲笑”有什么意义?请不要引用大篇幅的文章,请提供对您而言很重要的实际差异。 – 2010-03-13 02:53:08

回答

6

我们做到这一点。

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 

它并不需要太多设置它们

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) 

既然你不需要复杂的静态检查类型声明,所有你需要的是用正确的方法的类。您可以轻松地强制测试属性值。

这些东西都是真的,真的很容易写。你不需要很多支持或图书馆。

在其他语言(即Java的)它是很难写的东西会通过静态编译时检查鼓起。由于Python没有这个问题,因此为了测试目的而写入mock或虚假实现是微不足道的。

0

Python mocker看起来不错。

Mocker实例用于对任意数量的模拟对象命令记录和重播 期望值。

+1

这难道不是一个模拟框架......在这里你记录的期望,并确认他们......是没有什么简单的将只是创建假的实施对我来说..感谢 – StackUnderflow 2010-03-12 22:11:33

+4

@StackUnderflow:请区分某种头发。你能否更新你的问题来定义“嘲笑”和“假实施”之间的区别。我认为他们是一样的,但你说他们不一样。 – 2010-03-12 22:16:33