我有一个我想用mock测试的实例方法。我试图用另一个带参数的方法来替换这个实例类中的一个方法。用python中的参数模拟另一种可重复使用的方法
类是测试:
class ClassToTest():
def compute(self):
result = self._get_xml()
return result
def _get_xml(self):
#get xml here
return xml
测试文件:
from mock import patch
class ClassTest():
@patch('classToTest._get_xml', _get_fake_xml)
def computetest(self):
test = ClassToTest()
toassert = test.compute()
#assert whatever
#self.assert(...)
def _get_fake_xml(self, objects, filename):
py_file = os.path.abspath(__file__)
py_dir = os.path.dirname(py_file)
xml_file = os.path.join(py_dir, filename)
xml_tree = objectify.parse(xml_file)
return xml_tree.getroot()
return xml
现在我怎么可以添加的参数为_get_fake_xml方法在补丁
我曾尝试:
@patch('classToTest._get_xml', _get_fake_xml(mock.Mock(), 'filenam.xml'))
但这并没有奏效。然后我尝试将文件名作为全局变量,但出现以下错误:
self.filename在ClassToTest实例中不存在。
基本上我想能够重用_get_fake_xml与任何其他文件名。
有什么建议吗?
什么是封闭? – momigi
@AndyR它是一个与函数配对的范围。更多关于维基百科:http://en.wikipedia.org/wiki/Closure_(computer_science)。第一个例子有一个类似于我上面使用的Python。 – dokkaebi
我看到谢谢,但它并没有解决它 – momigi