我是一名通过测试驱动开发工作的C++程序员。我现在正在学习python3,并希望继续学习TDD。目前,在C++中,我为我的所有类提供了一个接口,并创建了它们的模拟版本。然后,我在代码中传递指向这些接口的指针。
我想知道我应该使用什么库才能在python中有效地进行tdd。python内置了什么,我还需要什么额外功能。我找到了这个,它看起来很有趣:
http://www.voidspace.org.uk/python/mock/
还有没有其他值得研究的选择?
是否有任何在线资源、在线教程或书籍值得一查?
谢谢!
发布于 2011-03-15 19:14:53
除了python提供的功能之外,我从来没有发现需要任何东西。
由于Python的Duck typing,用最小的实现创建模拟对象非常容易,然后读取其中的内容来检查您的断言。
我发现unittest模块对我来说也工作得很好。
发布于 2011-03-15 23:13:16
mock库被广泛用于mocking (尽管还有大量其他mock库,而且您通常根本不需要mock )。通常也会使用testrunners、nose、pytest、zope.testrunner或发行版中的一个。
发布于 2011-03-17 15:22:15
我最近一直在看这些,nose1把自己宣传成一个python tdd框架,mock,mox和大多数其他的python的mock lib似乎并不适合我的想法。我不是很确定真的需要mocker。正如前面提到的,python的鸭子类型非常灵活,只需创建一个基类并让它返回您想要/期望的值即可。但同时你也会有很多存根。这个模仿库,mocker1,对我来说似乎最有意义,但仍然没有使用它。
在我最近的经验中,unittest (python的std库的一部分)和存根似乎符合我的要求。我只是绘制了一个接口,为每个方法引发NotImplementedError,然后在我的测试接口(模拟模拟对象)中扩展该接口,返回预期/意外的结果,并将该接口扩展到我想要实现的类。我也不喜欢这个解决方案,我认为一个补丁装饰器可能会更好。在python中,接口通常称为MixIn类。
1 2
https://stackoverflow.com/questions/5310770
复制相似问题