W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
測試蜘蛛會變得特別煩人,雖然沒有什么可以阻止你編寫單元測試,但是任務會很快變得很麻煩。Scrapy提供了一種綜合的方法,可以通過合同的方式測試你的蜘蛛。
這允許您通過硬編碼一個示例URL來測試蜘蛛的每個回調(diào),并檢查回調(diào)如何處理響應的各種約束。每個合同的前綴都是 ?@
? 并包含在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
"""
此回調(diào)使用三個內(nèi)置合同進行測試:
scrapy.contracts.default.
UrlContract
本合同 (@url
)設置檢查此蜘蛛的其他合同條件時使用的示例URL。本合同是強制性的。運行檢查時,忽略所有缺少此協(xié)定的回調(diào):
@url url
scrapy.contracts.default.
CallbackKeywordArgumentsContract
本合同 (@cb_kwargs
)設置 ?cb_kwargs
? 示例請求的屬性。它必須是有效的JSON字典。:
@cb_kwargs {"arg1": "value1", "arg2": "value2", ...}
scrapy.contracts.default.
ReturnsContract
本合同 (@returns
)為蜘蛛返回的項和請求設置下限和上限。上限是可選的:
@returns item(s)|request(s) [min [max]]
scrapy.contracts.default.
ScrapesContract
本合同 (@scrapes
)檢查回調(diào)返回的所有項是否具有指定的字段::
@scrapes field_1 field_2 ...
使用 ?check
? 運行合同檢查的命令。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: