我想了解如何@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"
测试/模拟测试.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中所做的事情?
—
nsfyn55
Mock
,在python3.3 +中包含的模拟库unittest.mock
。