aiohttp测试库

async-responses的Python项目详细描述


异步响应

Documentation StatuscodecovPython packageUpload Python Package

Async Responses是一个库,它提供了一种简单的方法来模拟受aioresponses启发的aiohttp响应。在

安装

库在PyPi上可用,您只需使用pip安装它。在

$ pip install async-responses

使用

作为一个实例

^{pr2}$

作为上下文管理器

withAsyncResponses()asar:ar.get(...)

使用dict作为处理程序

将dict作为handler参数传递给异步响应将导致 作为JSON负载返回。在

importaiohttpfromasync_responsesimportAsyncResponsesasyncdeftest_response():ar=AsyncResponses()payload={'status':'ok'}ar.get('http://mock.url','/v1/status',handler=payload)asyncwithaiohttp.ClientSession()assession:response=awaitsession.get('http://mock.url/v1/status')assertawaitresponse.json()==payload

异常处理程序

调用异常为handler参数的异步响应将导致 它正在被提起。在

importaiohttpfromasync_responsesimportAsyncResponsesimportpytestasyncdeftest_response():ar=AsyncResponses()ar.get('http://mock.url','/v1/status',handler=ZeroDivisionError)withpytest.raises(ZeroDivisionError):asyncwithaiohttp.ClientSession()assession:awaitsession.get('http://mock.url/v1/status')

使用字符串作为处理程序

importaiohttpfromasync_responsesimportAsyncResponsesasyncdeftest_response():ar=AsyncResponses()payload='ok'ar.get('http://mock.url','/v1/status',handler=payload)asyncwithaiohttp.ClientSession()assession:response=awaitsession.get('http://mock.url/v1/status')assertawaitresponse.text()==payload

可调用作为处理程序

importaiohttpfromasync_responsesimportAsyncResponsesasyncdeftest_response():defhandler(data,**kwargs):return{'status':'ok'}ar=AsyncResponses()ar.get('http://mock.url','/v1/status',handler=payload)asyncwithaiohttp.ClientSession()assession:response=awaitsession.get('http://mock.url/v1/status')assertawaitresponse.json()=={'status':'ok'}

带有自定义状态代码

importaiohttpfromasync_responsesimportAsyncResponsesasyncdeftest_response():payload={'status':'not good'}ar=AsyncResponses()ar.get('http://mock.url','/v1/status',handler=payload,status=500)asyncwithaiohttp.ClientSession()assession:response=awaitsession.get('http://mock.url/v1/status')assertresponse.status==500assertawaitresponse.json()==payload

使用自定义响应类

异步响应将使用作为参数传递给的响应类 ClientSession,因此可以使用自定义JSON序列化程序。在

importaiohttpasyncdeftest_response():classCustomResponse(aiohttp.ClientResponse):asyncdefjson(self,*args,**kwargs):return{'hello':'world'}ar=AsyncResponses()ar.get('http://mock.url','/v1/status',handler='')asyncwithaiohttp.ClientSession(response_class=CustomResponse)assession:response=awaitsession.get('http://mock.url/v1/status')assertawaitresponse.json()=={'hello':'world'}assertisinstance(response,CustomResponse)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jsp错误:包net。旧金山。jasperreports。发动机JAVA中不存在设计   python PySpark未初始化   而Java中的循环并没有按我所希望的那样工作   jframe我在线程“AWTEventQueue0”java中遇到异常。lang.NumberFormatException:用于输入字符串:“年:”   java无法解析符号页   java分割包含问号和等号的字符串的最佳方法   java使用hibernate everytime查询oracle视图结果为空   拆分如何在java中提取两个字符之间的数据   java将链表的头部移动到尾部   java无法根据从数据库检索到的值设置微调器位置   java在SpringBoot中有什么方法可以控制关闭机制吗?   在Java8中,使用ValueComparator按值对Map<Integer,Float>进行排序会产生错误   java Eclipselink持久关系表创建选择   java将图像保留在图像视图位置   新安装的Neo4J服务器首次运行时出现linux java权限错误   java SQL插入与枚举?   javaswt标签中的透明背景