インポートしたモジュールから関数を@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
の値を返すだけです。テスト対象の名前空間にインポートしている他のパッケージのメソッドをモックするにはどうすればよいですか?