Scrapy:测试内联请求的有效方法

时间:2016-09-27 20:22:47

标签: python unit-testing scrapy

我使用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并获得包含假响应的数据的完整项目。你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

可能会有点晚,但请查看scrapy-inline-requests的github存储库:https://github.com/rmax/scrapy-inline-requests/blob/master/tests/test_inline_requests.py中的测试。

基本上,按照回调将为这些响应产生请求的顺序向回调提供一个Response对象列表。