(self, spider_middlewares, spider_cls, expected_items)
| 61 | |
| 62 | class TestMain: |
| 63 | async def _test(self, spider_middlewares, spider_cls, expected_items): |
| 64 | actual_items = [] |
| 65 | |
| 66 | def track_item(item, response, spider): |
| 67 | actual_items.append(item) |
| 68 | |
| 69 | settings = { |
| 70 | "SPIDER_MIDDLEWARES": {cls: n for n, cls in enumerate(spider_middlewares)}, |
| 71 | } |
| 72 | crawler = get_crawler(spider_cls, settings_dict=settings) |
| 73 | crawler.signals.connect(track_item, signals.item_scraped) |
| 74 | await crawler.crawl_async() |
| 75 | assert crawler.stats.get_value("finish_reason") == "finished" |
| 76 | assert actual_items == expected_items, f"{actual_items=} != {expected_items=}" |
| 77 | |
| 78 | async def _test_wrap(self, spider_middleware, spider_cls, expected_items=None): |
| 79 | expected_items = expected_items or [ITEM_A, ITEM_B, ITEM_C] |
no test coverage detected