我正在尝试在Python 3.6.8中测试异步功能,以及:
asyncio==3.4.3
requests==2.22.0
responses==0.10.6
pytest==4.6.3
pytest-asyncio==0.10.0
我同时请求多个URL,但缩减后的函数看起来像这样:
async def check_urls_tester(url: str) -> int:
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
loop = asyncio.get_event_loop()
futures = [loop.run_in_executor(executor, requests.head, url)]
response = await asyncio.gather(*futures, return_exceptions=True)
return int(response[0].status_code)
我的测试尝试看起来像:
@responses.activate
@pytest.mark.asyncio
async def test_check_urls_async(self):
responses.add(responses.HEAD, "https://www.google.com", status=404)
resp = await check_urls_tester("https://www.google.com")
assert resp == 404
我希望我的函数返回404,因为我正在使用responses模拟请求,但是返回200。我可以成功地将响应与非异步函数一起使用,但不能与该异步函数一起使用。 / p>
我在这里错过了哪一步?