, в пункте, начинающемся "Настроить возвращаемые значения в методах экземпляров для пропатченного класса ..."
у макетировать методы для любого экземпляра некоторого класса в производственном коде, чтобы облегчить тестирование. Есть ли в Python библиотека, которая могла бы облегчить это?
По сути, я хочу сделать следующее, но в Python (следующий код - Ruby, использующий библиотеку 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
Из вышесказанного важно отметить, что мне нужно макетировать его на уровне класса, поскольку мне действительно нужно макетировать методы в экземпляре, созданном объектом, который я тестирую.
Случай использования:
У меня есть классQueryMaker
который вызывает метод на экземпляреRemoteAPI
, Я хочу издеваться надRemoteAPI.get_data_from_remote_se,rver
способ вернуть некоторую константу. Как мне сделать это в тесте, не помещая особый случай вRemoteAPI
код, чтобы проверить, в какой среде он работает.
Пример того, что я хотел в действии:
# 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!"