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 :

Mocking de dépendances avec pytest


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut Mocking de dépendances avec pytest
    Bonjour,

    J'ai un code existant qui appelle un module que je ne peut pas modifier.

    Exemple je ne peux pas modifier module_non_modifiable.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import a.b.module_non_modifiable
     
    module_non_modifiable.fonction()
    Je dois "bouchonner" la fonction "fonction().

    Je cherche un mécanisme, qui me permette, si pytest est lancé de ne plus importer a.b.module_non_modifiable mais avoir un code "bouchon" (un mock).

    L'idée étant d'éviter de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    C_PYTEST_ACTIF = True
     
    if C_PYTEST_ACTIF:
       import test.module_non_modifiable
    else:
       import a.b.module_non_modifiable

    Mes recherches s'orientent vers monkepatch : https://docs.pytest.org/en/7.1.x/how...nkeypatch.html

    Suis-je sur la bonne voie ?

    Cordialement

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Jamais utilisé, mais à la vue de la doc, je dirai que oui, tu peux utiliser monkeypatch dans une fixture pytest afin de l'utiliser dans de multiples tests.

    Je suis pas un spécialiste du mock, mais tu peux continuer dans ce sens.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonjour,

    j'utilise pytest-mock pour le boulot comme à titre personnel.

    Avec cette lib, on peut "espionner" l'appel à une méthode/fonction, compter le nombre de fois où elle a été appelée, si elle a été appelée, etc.

    On peut aussi l'utiliser pour provoquer une erreur volontairement (et ainsi, s'assurer que notre try/except capture bien l'erreur).

    Et bien sûr, on peut s'en servir pour mocker une méthode ou fonction. Voir Mockerfixture de pytest-mock.

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Citation Envoyé par Arioch Voir le message
    Bonjour,

    j'utilise pytest-mock pour le boulot comme à titre personnel.

    Avec cette lib, on peut "espionner" l'appel à une méthode/fonction, compter le nombre de fois où elle a été appelée, si elle a été appelée, etc.

    On peut aussi l'utiliser pour provoquer une erreur volontairement (et ainsi, s'assurer que notre try/except capture bien l'erreur).

    Et bien sûr, on peut s'en servir pour mocker une méthode ou fonction. Voir Mockerfixture de pytest-mock.
    Vu
    https://pytest-mock.readthedocs.io/en/latest/

    Comment ne pas importer un module ?

    L'idée étant d'éviter de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    C_PYTEST_ACTIF = True
     
    if C_PYTEST_ACTIF:
       import test.module_non_modifiable
    else:
       import a.b.module_non_modifiable

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Cette discussion n'est pas toute jeune mais : https://stackoverflow.com/questions/...mock-an-import

Discussions similaires

  1. Injection de dépendance avec MVVM => Boucle infinie
    Par Stunt_las dans le forum Silverlight
    Réponses: 21
    Dernier message: 02/11/2009, 14h48
  2. Les dépendances avec les services Java Web Start
    Par kpouer dans le forum Maven
    Réponses: 2
    Dernier message: 04/08/2009, 12h18
  3. Réponses: 7
    Dernier message: 13/01/2009, 16h59
  4. Dépendance avec les plugins
    Par epotvin dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 28/02/2008, 21h52
  5. Make: génération des dépendances avec gcc
    Par Syrmonsieur dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 08/06/2006, 15h22

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