我使用scrapy-inline-requests库编写了一个蜘蛛。所以我的蜘蛛中的解析方法看起来像这样:
@inline_requests
def parse(self, response1):
item = MyItem()
loader = ItemLoader(item=item, response=response1)
#extracting some data from the response1
try:
response 2 = yield Request(some_url)
#extracting some other data from response2
except Exception:
self.logger.warning("Failed request to: %s", some_url)
yield loader.load_item()
我想有效地测试这种方法。我可以轻松编写一个测试,其中创建一个假的模拟响应1并将其传递给该函数。但是,我不知道如何模拟response2并获得包含假响应的数据的完整项目。你有什么建议吗?
答案 0 :(得分:0)
可能会有点晚,但请查看scrapy-inline-requests的github存储库:https://github.com/rmax/scrapy-inline-requests/blob/master/tests/test_inline_requests.py中的测试。
基本上,按照回调将为这些响应产生请求的顺序向回调提供一个Response对象列表。