Tôi muốn hiểu cách sử dụng @patchmột hàm từ một mô-đun đã nhập.
Đây là nơi tôi đang ở cho đến nay.
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()
Điều này không hoạt động như tôi mong đợi. Mô-đun "được vá" chỉ trả về giá trị chưa được sửa của get_user_name. Làm cách nào để mô phỏng các phương thức từ các gói khác mà tôi đang nhập vào một không gian tên đang được kiểm tra?
Mock, được bao gồm trong python3.3 + asunittest.mock.