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"):