在 Python 中,在单元测试期间禁用某些代码的好模式是什么?

2024-04-10

一般来说,我希望禁用尽可能少的代码,并且希望它是明确的:我不希望被测试的代码来决定它是否是测试,我希望测试告诉该代码“嘿,顺便说一句,我正在运行单元测试,请您不要调用 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对象而不是As 在你的测试代码中。进行嘲笑的另一种方法是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(使用前将#替换为@)

在 Python 中,在单元测试期间禁用某些代码的好模式是什么? 的相关文章

随机推荐