improve tests by having SlowSpider

This commit is contained in:
Kevin Lloyd Bernal 2023-07-18 22:29:15 +08:00
parent 2f787a27dc
commit 368ab29ffc
2 changed files with 19 additions and 3 deletions

View File

@ -77,6 +77,22 @@ class DelaySpider(MetaSpider):
self.t2_err = time.time()
class SlowSpider(DelaySpider):
name = "slow"
def start_requests(self):
# 1st response is fast
url = self.mockserver.url("/delay?n=0&b=0")
yield Request(url, callback=self.parse, errback=self.errback)
# 2nd response is slow
url = self.mockserver.url(f"/delay?n={self.n}&b={self.b}")
yield Request(url, callback=self.parse, errback=self.errback)
def parse(self, response):
yield Item()
class SimpleSpider(MetaSpider):
name = "simple"

View File

@ -3,7 +3,7 @@ from twisted.trial.unittest import TestCase
from scrapy.utils.test import get_crawler
from tests.mockserver import MockServer
from tests.spiders import DelaySpider, ErrorSpider, FollowAllSpider, ItemSpider
from tests.spiders import ErrorSpider, FollowAllSpider, ItemSpider, SlowSpider
class TestCloseSpider(TestCase):
@ -58,8 +58,8 @@ class TestCloseSpider(TestCase):
@defer.inlineCallbacks
def test_closespider_timeout_no_item(self):
timeout = 1
crawler = get_crawler(DelaySpider, {"CLOSESPIDER_TIMEOUT_NO_ITEM": timeout})
yield crawler.crawl(n=3, total=10, mockserver=self.mockserver)
crawler = get_crawler(SlowSpider, {"CLOSESPIDER_TIMEOUT_NO_ITEM": timeout})
yield crawler.crawl(n=3, mockserver=self.mockserver)
reason = crawler.spider.meta["close_reason"]
self.assertEqual(reason, "closespider_timeout_no_item")
total_seconds = crawler.stats.get_value("elapsed_time_seconds")