IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Utilisation des mock avec python [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2021
    Messages : 4
    Par défaut 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 : 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

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Si on regarde dans la documentation , on trouve çà rapidement.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2021
    Messages : 4
    Par défaut
    Bonjour,

    J'ai vu cette doc, mais je ne vois pas en quoi elle répond au comment passer le mocks à la classe statique FeatEng comme on n'a pas de constructeur dans les classes statiques?



    Cdt

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Citation Envoyé par h.hoc Voir le message
    je ne vois pas en quoi elle répond au comment passer le mocks à la classe statique FeatEng comme on n'a pas de constructeur dans les classes statiques?
    Un classe "statique" n'existe pas. Ce que vous montrez est une classe qui a une méthode décorée via staticmethod, autrement dit une simple fonction (et dans la documentation, on vous explique comment faire un mock de fonction dans un module (ou d'une classe).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2021
    Messages : 4
    Par défaut
    Merci c'est clair en implémentant comme cela et cela marche très bien j'obtient ce que je veux.
    J'ai mocké la méthode, ainsi que ces variables pour lesquelles j'ai définis ce que je voulais qu'elles aient comme valeur, et ainsi que la valeur de retour de la méthode.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser des variables avec Python et Gladfly ?!
    Par Exodus dans le forum Général Python
    Réponses: 5
    Dernier message: 17/09/2007, 09h49
  2. [JMS] Utilisation des "queue" avec JMS
    Par be_tnt dans le forum Java EE
    Réponses: 1
    Dernier message: 01/11/2006, 16h05
  3. [JTABLE] Peut-on utiliser des autoFilters avec une JTable
    Par Nico+10) dans le forum Composants
    Réponses: 3
    Dernier message: 18/09/2006, 19h53
  4. Utilisation des paramètres avec rowsource - 97 et 2003
    Par IntenseM3 dans le forum Access
    Réponses: 1
    Dernier message: 10/05/2006, 09h18
  5. Utiliser des webservices avec nusoap
    Par budiste dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 30/03/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo