2010-11-24 2 views
1

Existe-t-il un moyen de remplacer une bibliothèque cliente (qui communique avec un serveur distant) par un objet fantaisie provenant d'un unittest?Remplacer une bibliothèque client par une simulation d'un test?

Voici un schéma pour expliquer ce que j'essaie de faire

+---------------+ 
    |  tests  |----{ mock } 
    +---------------+  | 
      |    | 
      v    | 
    +---------------+  | 
    |  model  |  | 
    +---------------+  | 
      |    | 
      v    | 
    +---------------+  | 
    | client-module |<--{replaces} 
    +---------------+ 
      ^
      : 
      : 
      v 
    +---------------+ 
    | service | 
    +---------------+ 

Depuis les essais importer le modèle, ce qui importe le module client, il ne semble pas être un moyen d'appliquer la maquette aux internes du modèle.

Répondre

1

Si model.py fait un

import client_module 

et ne pas utiliser toutes les fonctionnalités de celui-ci au moment de l'importation, vous pouvez faire

import model 

... 

model.client_module = MyMockModule() 

MyMockModule retours appropriés pour se moque des choses le vrai client_module fournit. Je ne l'ai pas montré des trucs setUp/tearDown pour prendre soin de cela, mais nous espérons que vous avez l'idée,

Si modelne utilisation des trucs de client_module au moment de l'importation, vous devrez remplacer sys.modules['client_module'] avec le module moqué avant d'importer model.

Questions connexes