异步和等待方法的Python pytest案例

lan*_*pta 7 python pytest python-3.x async-await aiohttp

我正在尝试为以下异步编写pytest,等待方法,但我无处可去.

   class UserDb(object):
    async def add_user_info(self,userInfo):
      return await self.post_route(route='users',json=userInfo)

    async def post_route(self,route=None,json=None,params=None):
      uri = self.uri + route if route else self.uri      
      async with self.client.post(uri,json=json,params=params) as resp:            
      assert resp.status == 200
      return await resp.json()
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗?TIA

Jug*_*aut 8

pip install pytest-aiohttp,然后创建这样的夹具

from pytest import fixture

def make_app():
    app = Application()
    # Config your app here
    return app

@fixture
def test_fixture(loop, test_client):
    """Test fixture to be used in test cases"""
    app = make_app()
    return loop.run_until_complete(test_client(app))
Run Code Online (Sandbox Code Playgroud)

现在编写测试

f = test_fixture

async def test_add_user_info(f):
    resp = await f.get('/')
    assert resp.status == 200
    assert await resp.json() == {'some_key': 'some_value'}
Run Code Online (Sandbox Code Playgroud)

另外我注意到你的add_user_info协程没有返回任何东西.更多信息在这里