Моя цель - протестировать паука, написанного с использованием scrapy
(Python
). Я попытался использовать contracts
, но это действительно ограничено в том смысле, что я не могу проверить такие вещи, как разбиение на страницы или правильно ли извлечены некоторые атрибуты.
def parse(self, response):
""" This function parses a sample response. Some contracts are mingled
with this docstring.
@url http://someurl.com
@returns items 1 16
@returns requests 0 0
@scrapes Title Author Year Price
"""
Итак, вторая идея - mock
всех запросов, которые паук делает за один прогон, и использовать их на этапе testing
для проверки ожидаемых результатов. Тем не менее, я не уверен, и как я могу издеваться над каждым запросом, который сделан через паука. Я просмотрел различные библиотеки, и одна из них - betamax . Однако он поддерживает только http-запросы, сделанные requests
клиентом Python. (Как уже упоминалось здесь ). Существует еще одна библиотека vcrpy , но она также поддерживает только ограниченные клиенты.
Используете ли вы запросы? Если вы не используете запросы, Betamax не
для тебя. Вы должны проверить VCRpy. Вы используете сеансы или вы
используя функциональный API (например ,quests.get)?
Последний вариант - вручную записать все запросы и каким-то образом сохранить их, но на самом деле это неосуществимо в том масштабе, в котором паук делает запросы.
Использует ли scrapy.Requests
какой-либо подчеркнутый Python-клиент, который можно использовать для проверки этих запросов? Или есть какой-то другой способ, которым я могу смоделировать все запросы http
, сделанные пауком за один прогон, и использовать его для проверки ожидаемого поведения паука?