如何模仿Pythonic的方式?

时间:2011-11-16 12:30:32

标签: python unit-testing mocking mox

Mox模拟库允许您对您正在嘲笑的类具体或不可知。

  1. mock = mox.CreateMock(Foo)
  2. mock = mox.CreateMockAnything()
  3. Mox文档建议尽可能使用第一种方式(基本上检查模拟的类型)。 Python作为动态语言是类型不可知的。这两种方法看起来与我不一致。

    那么,哪种嘲弄方法更像是Pythonic?

1 个答案:

答案 0 :(得分:2)

他们不一样。来自documentation

  

某些类不提供公共接口;例如,他们可能   使用__getattribute__动态创建其界面。对于这些   类,您可以使用MockAnything。它没有强制执行   界面,所以任何你心愿的呼唤都是有效的。它适用于   相同的记录 - 重放 - 验证范例。 除非你这样做,否则不要使用它   绝对必须!你可以创建一个MockAnything   Mox实例的CreateMockAnything方法如下:

相反,使用CreateMock(Foo)创建模拟时,在调用未知方法时会出现异常。