You only need to mark your tests as async
@pytest.mark.asyncio
async def test_app(create_x, auth):
api_client, x_id = create_x
resp = await api_client.get(f'my_res/{x_id}', headers=auth)
assert resp.status == web.HTTPOk.status_code
This tells pytest to run the test inside an event loop rather than calling it directly.
The fixtures can be marked as normal
@pytest.fixture
async def create_x(api_client):
x_id = await add_x(api_client)
return api_client, x_id