异步和等待方法的 Python pytest 案例 [英] Python pytest cases for async and await method

查看:25
本文介绍了异步和等待方法的 Python pytest 案例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为以下 async、await 方法编写 pytest,但我一无所获.

I am trying to write pytest for the following async, await methods but I am getting nowhere.

   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()

有人可以帮我解决这个问题吗?TIA

Can someone help me with this? TIA

推荐答案

pip install pytest-aiohttp,然后像这样创建一个fixture

pip install pytest-aiohttp, then create a fixture like this

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

现在编写测试

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'}

我还注意到您的 add_user_info 协程没有返回任何内容.更多信息在这里

Also I noticed your add_user_info coroutine isn't returning anything. More info is here

这篇关于异步和等待方法的 Python pytest 案例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆