Mocking métodos en cualquier instancia de una clase de python

Quiero burlarme de los métodos en cualquier instancia de alguna clase en el código de producción para facilitar las pruebas. ¿Hay alguna biblioteca en Python que pueda facilitar esto?

ásicamente, quiero hacer lo siguiente, pero en Python (el siguiente código es Ruby, usando la biblioteca Mocha):

  def test_stubbing_an_instance_method_on_all_instances_of_a_class
    Product.any_instance.stubs(:name).returns('stubbed_name')
    assert_equal 'stubbed_name', SomeClassThatUsesProduct.get_new_product_name
  end

Lo importante a tener en cuenta desde arriba es que necesito simularlo a nivel de clase, ya que realmente necesito simular métodos en una instancia creada por lo que estoy probando.

Uso:

Tengo una claseQueryMaker que llama a un método en una instancia deRemoteAPI. Quiero burlarme de laRemoteAPI.get_data_from_remote_se,rver método para devolver alguna constante. ¿Cómo hago esto dentro de una prueba sin tener que poner un caso especial dentro de laRemoteAPI código para verificar en qué entorno se está ejecutando.

Ejemplo de lo que quería en acción:

# a.py
class A(object):
    def foo(self):
        return "A's foo"

# b.py
from a import A

class B(object):
    def bar(self):
        x = A()
        return x.foo()

# test.py
from a import A
from b import B

def new_foo(self):
    return "New foo"

A.foo = new_foo

y = B()
if y.bar() == "New foo":
    print "Success!"

Respuestas a la pregunta(4)

Su respuesta a la pregunta