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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager