我在为我的测试打补丁时遇到了麻烦。我正在尝试修补属于Scrapy-aHtmlXpathSelector类的内容。在
下面是一些代码:
from scrapy.selector import HtmlXPathSelector
from mock import MagicMock, patch
with patch('scrapy.selector.HtmlXPathSelector') as MockHtml:
instance = MockHtml.return_value
instance.method.return_value = 'foo'
example = HtmlXPathSelector()
print type(example)
assert example is instance
assert example.method == 'foo'
结果是:
^{pr2}$此示例与模拟库教程中的示例几乎相同。知道为什么不起作用吗?在
代码示例有两个问题。首先,您已经从scrapy模块导入了HtmlXPathSelector,然后在实际操作之后更改该名称。请改为导入选择器,然后使用该名称:
另一个问题是,最后一行是检查
method
,而它需要以method()
的形式调用方法。在不应修补已在当前测试代码中导入的类。相反,您需要修补相应模块中的类(您需要测试)。因此,如果在
mymodule
中导入了HtmlXPathSelector
,您将修补为:有关详细信息,请参见where to patch。在
编辑如果您确实需要这样做,您可以使用以下内容修补当前模块中的类:
^{pr2}$相关问题 更多 >
编程相关推荐