Merge pull request #5094 from elacuesta/fix-item-class-in-engine-tests

Engine tests: fix item class spider, add minimal type hints
This commit is contained in:
Adrián Chaves 2021-04-13 11:07:15 +02:00 committed by GitHub
commit 18502981f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 17 deletions

View File

@ -43,9 +43,6 @@ ignore_errors = True
[mypy-tests.test_downloader_handlers]
ignore_errors = True
[mypy-tests.test_engine]
ignore_errors = True
[mypy-tests.test_exporters]
ignore_errors = True

View File

@ -56,7 +56,7 @@ class TestSpider(Spider):
name_re = re.compile(r"<h1>(.*?)</h1>", re.M)
price_re = re.compile(r">Price: \$(.*?)<", re.M)
item_cls = TestItem
item_cls: type = TestItem
def parse(self, response):
xlink = LinkExtractor()
@ -66,15 +66,15 @@ class TestSpider(Spider):
yield Request(url=link.url, callback=self.parse_item)
def parse_item(self, response):
item = self.item_cls()
adapter = ItemAdapter(self.item_cls())
m = self.name_re.search(response.text)
if m:
item['name'] = m.group(1)
item['url'] = response.url
adapter['name'] = m.group(1)
adapter['url'] = response.url
m = self.price_re.search(response.text)
if m:
item['price'] = m.group(1)
return item
adapter['price'] = m.group(1)
return adapter.item
class TestDupeFilterSpider(TestSpider):
@ -87,7 +87,7 @@ class DictItemsSpider(TestSpider):
class AttrsItemsSpider(TestSpider):
item_class = AttrsItem
item_cls = AttrsItem
try:
@ -97,14 +97,10 @@ except ImportError:
else:
TestDataClass = make_dataclass("TestDataClass", [("name", str), ("url", str), ("price", int)])
class DataClassItemsSpider(DictItemsSpider):
class DataClassItemsSpider(DictItemsSpider): # type: ignore[no-redef]
def parse_item(self, response):
item = super().parse_item(response)
return TestDataClass(
name=item.get('name'),
url=item.get('url'),
price=item.get('price'),
)
return TestDataClass(**item)
class ItemZeroDivisionErrorSpider(TestSpider):

View File

@ -37,7 +37,7 @@ basepython = python3
deps =
mypy==0.780
commands =
mypy {posargs: scrapy tests}
mypy --show-error-codes {posargs: scrapy tests}
[testenv:security]
basepython = python3