2017-08-03 1 views
0

Dans mon FooClass j'ai self.mylist qui se compose de MyObject s et est en cours de création à partir de certaines requêtes de base de données.
Jusqu'à présent, dans mes tests, je l'ai utilisé pytest appareil:Liste de moquerie d'objets en Python

@fixture 
    def mock_mylist(): 
     foo = FooClass() 
     foo.mylist = MagicMock() 
     return foo 

Il a bien fonctionné, quand je devais les méthodes d'essai, dont je avais besoin mylist juste « être une liste ». Cependant, l'une des méthodes se fonde sur mylist et faire quelques contrôles comme

for el in mylist: 
    if el.MyObject.a == 1 and el.MyObject.b == 2 and... 
     #compare el.MyObject.c to some external value and process... 

Pour résumer, j'ai besoin d'un test mylist avec moqué MyObject, mais je voudrais définir en quelque sorte une partie de moquaient MyObject attributs.

Répondre

0

Préparer les objets à l'avance:

@fixture 
def mock_mylist(): 
    foo = FooClass() 
    foo.mylist = MagicMock() 
    for el in foo.mylist: 
     el.MyObject.a = 1 
     el.MyObject.b = 2 
     # …and… 
    return foo