From 726f78c8047094f484e68d17686c75840ab12a7a Mon Sep 17 00:00:00 2001 From: Adrian Chaves Date: Wed, 5 Aug 2026 07:55:01 +0200 Subject: [PATCH] Improve test coverage --- tests/test_contracts.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/test_contracts.py b/tests/test_contracts.py index 3d3f456bd..779bb6a59 100644 --- a/tests/test_contracts.py +++ b/tests/test_contracts.py @@ -164,6 +164,20 @@ class DemoSpider(Spider): """ return self.returns_request_async(response) + def returns_async_gen_sync(self, response): + """method which returns an async generator without being defined with async def + @url http://scrapy.org + @returns items 1 1 + """ + return self.returns_async_gen(response) + + async def raises_async(self, response): + """async method which raises an exception + @url http://scrapy.org + @returns items 1 1 + """ + raise ValueError("async callback error") + def returns_dict_fail(self, response): """method which returns item @url http://scrapy.org @@ -486,6 +500,23 @@ class TestContractsManager: request.callback(response) self.should_error() + def test_returns_async_gen_sync(self): + spider = DemoSpider() + response = ResponseMock() + + request = self.conman.from_method(spider.returns_async_gen_sync, self.results) + request.callback(response) + self.should_error() + + @coroutine_test + async def test_raises_async(self): + spider = DemoSpider() + response = ResponseMock() + + request = self.conman.from_method(spider.raises_async, self.results) + await request.callback(response) + self.should_error() + def test_returns_invalid_argument_count(self): spider = DemoSpider() with pytest.raises(ValueError, match="expected 1, 2 or 3, got 0"):