一般来说,我希望禁用尽可能少的代码,并且希望它是明确的:我不希望被测试的代码来决定它是否是测试,我希望测试告诉该代码“嘿,顺便说一句,我正在运行单元测试,请您不要调用 solr,而是将您要发送到 solr 的内容粘贴在此处,以便我可以检查”。我有我的想法,但我不喜欢其中任何一个,我希望有一个很好的Pythonic方法来做到这一点。
您可以使用模拟对象 http://en.wikipedia.org/wiki/Mock_object拦截您不想执行的方法调用。
例如。你有一些课A
,你不需要方法的地方no()
在测试期间被调用。
class A:
def do(self):
print('do')
def no(self):
print('no')
模拟对象可以继承自A
并覆盖no()
什么也不做。
class MockA(A):
def no(self):
pass
然后你会创建MockA
对象而不是A
s 在你的测试代码中。进行嘲笑的另一种方法是A
and MockA
实现一个通用接口说InterfaceA
.
有大量可用的模拟框架。看StackOverflow:Python 模拟框架 https://stackoverflow.com/questions/98053/what-is-your-favorite-python-mocking-library.
特别参见:Google 的 Python 模拟框架 http://google-opensource.blogspot.com/2008/07/check-out-mox-our-mock-object-framework.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)