我有一个测试。它向 url 列表发送一个 get 请求,并检查响应是否为 500。
@pytest.mark.asyncio
@pytest.mark.parametrize('url_test_list', get_all_url_list(HOST_FOR_TEST))
async def test_check_status_urls(self, url_test_list):
returned_status = await get(url_test_list)
assert returned_status < 500
这是我的“获取”功能
async def get(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
response_status = response.status
return response_status
它有效,但速度很慢。大约需要 3 分钟才能完成。
但是当我在没有@parametrize 的情况下使用这个测试并且我的“get”函数使用 url_list 时 - 它运行大约 1 分钟。我在第二种情况下的代码:
@pytest.mark.asyncio
async def test_check_status_urls(self):
url_list = make_url_list()
returned_status = await get(url_list)
assert all(returned_status) > 500
async def get(urls):
good_list = []
async with aiohttp.ClientSession() as session:
for url in urls:
async with session.get(url) as response:
response_status = response.status
good_list.append(response_status)
return good_list
我想在这里两全其美。有没有办法让测试快速运行,但也可以作为单独的单元运行?