在一个方法中模拟一个对象,该方法不是python中的参数

时间:2011-07-21 08:28:14

标签: python mocking python-unittest

(我是蟒蛇新手)

我在看:Mocking out objects and methods

我想知道我是否可以在python方法中替换一个未作为参数传递的对象,假设我的方法是这样的:

def mypymethod(param1)
  myresult = os.path.something
  return myresult

我希望测试mypy方法但是我希望 os.path在这种情况下返回“yourmockresult”当我从我的测试方法中调用它时

无论如何我能做到这一点? 谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用Michael Foord的Mock模块。

来自文档:

>>> from mock import Mock
>>> real = ProductionClass()
>>> real.method = Mock(return_value=3)
>>> real.method(3, 4, 5, key='value')
3
>>> real.method.assert_called_with(3, 4, 5, key='value')