Как издеваться над методом, класс которого определяется во время выполнения?

#python #mocking

#python #издевательство

Вопрос:

Предположим, что все следующие блоки находятся в разных файлах. Как мне издеваться над вызовом self.eggs.baz в C.foobar()

 def foo(c):
    if c == 1:
        return A()
    elif c == 2:
        return B():


class A:
    def bar():
        pass

class B:
    def baz():
        pass

class C:
    def __init__():
        self.eggs = foo(2)

    def foobar():
        #How do I mock the line below?
        self.eggs.baz() 
 

Комментарии:

1. Почему бы не издеваться foo ?

2. Какова ваша цель издевательства? Разве нет альтернативы?

3. Метод, который я намереваюсь высмеять, вызывает побочные эффекты, которых я предпочел бы не иметь во время тестирования.