MCPcopy
hub / github.com/scrapy/scrapy / test_stats_calculations

Method test_stats_calculations

tests/test_logstats.py:21–57  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

19
20 @coroutine_test
21 async def test_stats_calculations(self):
22 logstats = LogStats.from_crawler(self.crawler)
23
24 with pytest.raises(AttributeError):
25 logstats.pagesprev
26 with pytest.raises(AttributeError):
27 logstats.itemsprev
28
29 logstats.spider_opened(self.spider)
30 assert logstats.pagesprev == 4802
31 assert logstats.itemsprev == 3201
32
33 logstats.calculate_stats()
34 assert logstats.items == 3201
35 assert logstats.pages == 4802
36 assert logstats.irate == 0.0
37 assert logstats.prate == 0.0
38 assert logstats.pagesprev == 4802
39 assert logstats.itemsprev == 3201
40
41 # Simulate what happens after a minute
42 self.stats.set_value("response_received_count", 5187)
43 self.stats.set_value("item_scraped_count", 3492)
44 logstats.calculate_stats()
45 assert logstats.items == 3492
46 assert logstats.pages == 5187
47 assert logstats.irate == 291.0
48 assert logstats.prate == 385.0
49 assert logstats.pagesprev == 5187
50 assert logstats.itemsprev == 3492
51
52 # Simulate when spider closes after running for 30 mins
53 self.stats.set_value("start_time", datetime.fromtimestamp(1655100172))
54 self.stats.set_value("finish_time", datetime.fromtimestamp(1655101972))
55 logstats.spider_closed(self.spider, "test reason")
56 assert self.stats.get_value("responses_per_minute") == 172.9
57 assert self.stats.get_value("items_per_minute") == 116.4
58
59 def test_stats_calculations_no_time(self):
60 """The stat values should be None since the start and finish time are

Callers

nothing calls this directly

Calls 6

calculate_statsMethod · 0.80
from_crawlerMethod · 0.45
spider_openedMethod · 0.45
set_valueMethod · 0.45
spider_closedMethod · 0.45
get_valueMethod · 0.45

Tested by

no test coverage detected