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