Je veux comprendre comment @patch
une fonction d'un module importé.
Voilà où j'en suis pour l'instant.
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()
Cela ne pas fonctionnent comme je m'y attendais. Le module "patché" renvoie simplement la valeur non simulée de get_user_name
. Comment puis-je simuler les méthodes d'autres paquets que j'importe dans un espace de nom en cours de test ?