Fix csviter call, add parse_rows test (#5394)

This commit is contained in:
Laerte 2022-02-08 10:57:19 -03:00 committed by GitHub
parent 840362496c
commit 4bda0976b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View File

@ -123,7 +123,7 @@ class CSVFeedSpider(Spider):
process_results methods for pre and post-processing purposes.
"""
for row in csviter(response, self.delimiter, self.headers, self.quotechar):
for row in csviter(response, self.delimiter, self.headers, quotechar=self.quotechar):
ret = iterate_spider_output(self.parse_row(response, row))
for result_item in self.process_results(response, ret):
yield result_item

View File

@ -21,6 +21,7 @@ from scrapy.spiders import (
)
from scrapy.linkextractors import LinkExtractor
from scrapy.utils.test import get_crawler
from tests import get_testdata
class SpiderTest(unittest.TestCase):
@ -167,6 +168,23 @@ class CSVFeedSpiderTest(SpiderTest):
spider_class = CSVFeedSpider
def test_parse_rows(self):
body = get_testdata('feeds', 'feed-sample6.csv')
response = Response("http://example.org/dummy.csv", body=body)
class _CrawlSpider(self.spider_class):
name = "test"
delimiter = ","
quotechar = "'"
def parse_row(self, response, row):
return row
spider = _CrawlSpider()
rows = list(spider.parse_rows(response))
assert rows[0] == {'id': '1', 'name': 'alpha', 'value': 'foobar'}
assert len(rows) == 4
class CrawlSpiderTest(SpiderTest):