scrapy 2.3 蜘蛛合約

2021-06-16 10:08 更新

測試蜘蛛會變得特別煩人,雖然沒有什么可以阻止你編寫單元測試,但是任務會很快變得很麻煩。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)置合同進行測試:

classscrapy.contracts.default.UrlContract

本合同 (@url )設置檢查此蜘蛛的其他合同條件時使用的示例URL。本合同是強制性的。運行檢查時,忽略所有缺少此協(xié)定的回調(diào):

@url url
classscrapy.contracts.default.CallbackKeywordArgumentsContract

本合同 (@cb_kwargs )設置 ?cb_kwargs? 示例請求的屬性。它必須是有效的JSON字典。:

@cb_kwargs {"arg1": "value1", "arg2": "value2", ...}
classscrapy.contracts.default.ReturnsContract

本合同 (@returns )為蜘蛛返回的項和請求設置下限和上限。上限是可選的:

@returns item(s)|request(s) [min [max]]
classscrapy.contracts.default.ScrapesContract

本合同 (@scrapes )檢查回調(diào)返回的所有項是否具有指定的字段::

@scrapes field_1 field_2 ...

使用 ?check? 運行合同檢查的命令。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號