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 :

Mock de fonction


Sujet :

Python

  1. #1
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut Mock de fonction
    Bonjour,
    J'ai une fonction que je veux mocker
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pwd.getpwnam(USER_NAME).pw_uid
    je veux pouvoir lors de mes tests obliger cette fonction à retourner une valeur numérique de mon choix. Je suis en python 2.7 et j'utilise mock et j'arrive à mocker les fonctions écrite par moi même mais les fonctions des librairies python je n'y arrive pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Permissions():
     
    	def pwd():
                USER_NAME="titi"
    	    expected_uid=pwd.getpwnam(USER_NAME).pw_uid
    dans mon module de test j'essaye d'utiliser mais rien n'y fait je n'arrive à rien.
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Le problème est peut être que vous ne voulez pas mocker une fonction mais l'objet qu'elle retourne.
    Partez d'un truc comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import pwd
    def f():
        return pwd.getpwnam('user').pw_uid
    pwd.getpwnam retourne un objet de type pwd.struct_passwd qui est une sorte de namedtuple, enfin l'instance d'un truc qui a un attribut .pw_uid:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from collections import namedtuple
    fake = namedtuple('fake', 'pw_uid')
    Maintenant, remplaçons la fonction pwd.getpwnam par un mock qui retourne un "fake" avec la valeur qu'on veut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from unittest.mock import MagicMock
    pwd.getpwnam = MagicMock(return_value=fake(1234))
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Points : 167
    Points
    167
    Par défaut
    Merci, ça fonctionne bien

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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