【发布时间】:2014-02-04 17:21:07
【问题描述】:
我无法替换调用另一个模块中的函数的简单方法。根据我对模拟的理解,您必须引用被调用的方法(在它的上下文中,而不是原始方法)。下面是我正在运行的简化版本,希望它是我需要了解模拟的简单内容。补丁是否仅用于 Class 和 Class 方法,还是我在这里做错了什么?
谢谢, 史蒂夫
myapp.models.py
from myapp.backends import get_backend
class BasicClass(models.Model):
@staticmethod
def basic_method()
be = get_backend()
print be
myapp.backends._init_.py
def get_backend():
return 'original value'
test.py
# Referencing the import in myapp.models.basic_class
# vs directly importing myapp.backends
# as indicated here:
# http://www.voidspace.org.uk/python/mock/patch.html#where-to-patch
from myapp.models import get_backend
from myapp.models.basic_class import BasicClass
class ParsersTest(TestCase):
@patch('myapp.models.get_backend')
def test_simplified(self, moves_backend):
# Assertion fails
assert get_backend is moves_backend
# Assuming that assertion fails is why the original return value is always returned
moves_backend.return_value = 'new return value'
BasicClass.basic_method()
【问题讨论】:
标签: python django unit-testing python-mock