Mox 模拟库允许您对正在模拟的类进行特定或不可知论。
mock = mox.CreateMock(Foo)
或者mock = mox.CreateMockAnything()
Mox 文档建议尽可能使用第一种方法(基本上检查模拟的类型)。Python 作为一种动态语言与类型无关。这两种方法在我看来不一致。
那么,哪种模拟方法更符合 Python 风格?
Mox 模拟库允许您对正在模拟的类进行特定或不可知论。
mock = mox.CreateMock(Foo)
或者mock = mox.CreateMockAnything()
Mox 文档建议尽可能使用第一种方法(基本上检查模拟的类型)。Python 作为一种动态语言与类型无关。这两种方法在我看来不一致。
那么,哪种模拟方法更符合 Python 风格?
他们不一样。从文档中:
有些类不提供公共接口;例如,他们可能会使用
__getattribute__
动态创建他们的界面。对于这些类,您可以使用MockAnything
. 它不强制执行任何接口,因此您内心渴望的任何调用都是有效的。它在相同的记录-重放-验证范式中工作。除非绝对必要,否则不要使用它!您可以使用Mox 实例MockAnything
的 方法创建一个,如下所示:CreateMockAnything
相反,在使用创建模拟CreateMock(Foo)
时,调用未知方法时会出现异常。