Utilisation des mock avec python
Bonjour,
J'ai une class statique FeatEng important une variable app_client_instance, cette dernière créé un objet de type AppClient.
Je veux mocker les class app_client_instance and AppClient sauf FeatEng qui est statique.
Mais je ne sais comment passer le mocks à la classe statique FeatEng comme on n'a pas de constructeur dans les classes statiques.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
app_client.py
-------------
class AppClient:
def __init__(self):
self.val = "true"
def get_value(self, feature_eng):
return self.val
....................................................
app_client_instance.py
----------------------
from app_client import AppClient
app_client_instance = AppClient()
....................................................
feat_eng.py
-----------
from app_client_instance import app_client_instance
class FeatEng:
@staticmethod
def is_activ(feature_eng):
client = app_client_instance
value = client.get_value(feature_eng)
return "true" == value
....................................................
test.py
-------
import unittest
from unittest.mock import MagicMock
from app_client import AppClient
from app_client_instance import app_client_instance
from feat_eng import FeatEng
class FeatEngShould(unittest.TestCase):
def test_mockmagshouldFalse(self):
client = MagicMock(spec=AppClient, name=AppClient)
client.get_value.return_value = "false"
instance = MagicMock()
instance.app_client_instance.return_value = client
result = FeatEng.is_activ("MIG_ENG")
self.assertFalse(result) |
Merci