2015-01-01 2 views
0

Скажем, у меня такая ситуация:обезьяна латание класса в функцию, которая вызывается из метода ребенка (Python)

module2.py

class Bar: 

    def bar(): 
     a = 5 
     # do stuff 
     Messages.show("Done") 

module1.py

import module2 

class Foo: 

    def __init__(self): 
     self.bar = module2.Bar() 
    def foo(self): 
     self.bar.bar() 

Я хочу протестировать метод Foo.foo(), но я хочу игнорировать Messages.show («Готово»), т.е. хочу, чтобы звонки в сообщения .show, которая будет выполняться на макет-объекте. Если foo вызывал Message.show напрямую, я мог бы использовать monkeypatch в foo, чтобы высмеять класс Messages. Но теперь я вызываю класс из другого модуля, и я не знаю, как указать, что вызовы Messages.show не должны выполняться (причина в том, что они обращаются к Gui и не работают в тестовой среде) , Предположим, я не могу изменить module2.py.

ответ

2

Просто переопределить module2 думает Messages является:

import module2 

module2.Messages = ... 
Смежные вопросы