scrapy 2.3 蜘蛛合约
2021-06-16 10:08 更新
测试蜘蛛会变得特别烦人,虽然没有什么可以阻止你编写单元测试,但是任务会很快变得很麻烦。Scrapy提供了一种综合的方法,可以通过合同的方式测试你的蜘蛛。
这允许您通过硬编码一个示例URL来测试蜘蛛的每个回调,并检查回调如何处理响应的各种约束。每个合同的前缀都是 @
并包含在docstring中。请参见以下示例:
def parse(self, response):
""" This function parses a sample response. Some contracts are mingled
with this docstring.
@url http://www.amazon.com/s?field-keywords=selfish+gene
@returns items 1 16
@returns requests 0 0
@scrapes Title Author Year Price
"""
此回调使用三个内置合同进行测试:
- class
scrapy.contracts.default.
UrlContract
本合同 (
@url
)设置检查此蜘蛛的其他合同条件时使用的示例URL。本合同是强制性的。运行检查时,忽略所有缺少此协定的回调:@url url
- class
scrapy.contracts.default.
CallbackKeywordArgumentsContract
本合同 (
@cb_kwargs
)设置 cb_kwargs
示例请求的属性。它必须是有效的JSON字典。:@cb_kwargs {"arg1": "value1", "arg2": "value2", ...}
- class
scrapy.contracts.default.
ReturnsContract
本合同 (
@returns
)为蜘蛛返回的项和请求设置下限和上限。上限是可选的:@returns item(s)|request(s) [min [max]]
- class
scrapy.contracts.default.
ScrapesContract
本合同 (
@scrapes
)检查回调返回的所有项是否具有指定的字段::@scrapes field_1 field_2 ...
使用 check
运行合同检查的命令。
以上内容是否对您有帮助:
更多建议: