【发布时间】:2013-04-14 14:20:41
【问题描述】:
我想了解如何@patch 导入模块中的函数。
这是我目前为止的地方。
app/mocking.py:
from app.my_module import get_user_name
def test_method():
return get_user_name()
if __name__ == "__main__":
print "Starting Program..."
test_method()
app/my_module/__init__.py:
def get_user_name():
return "Unmocked User"
test/mock-test.py:
import unittest
from app.mocking import test_method
def mock_get_user():
return "Mocked This Silly"
@patch('app.my_module.get_user_name')
class MockingTestTestCase(unittest.TestCase):
def test_mock_stubs(self, mock_method):
mock_method.return_value = 'Mocked This Silly')
ret = test_method()
self.assertEqual(ret, 'Mocked This Silly')
if __name__ == '__main__':
unittest.main()
这确实不按我的预期工作。 “已修补”模块仅返回 get_user_name 的未模拟值。如何模拟我要导入到正在测试的命名空间的其他包中的方法?
【问题讨论】:
-
我在问我是否要这样做。我查看了 Mock,但我没有看到解决这个特定问题的方法。有没有办法重新创建我在 Mock 中所做的事情?
标签: python unit-testing python-unittest python-mock