在“请求”级别轻松模拟对UberSmith的调用。

pytest-ubersmith的Python项目详细描述


对python ubersmith库的模拟调用

用法

pytest ubersmith使模拟api调用变得非常容易:

importubersmith.clientdeftest_add_client(ubermock):client_id=1234ubermock.client.add=client_idassertubersmith.client.add(login='test',password='abc')==1234# Easy checking of callsassertubermock.client.add.calledassertubermock.client.add.call_count==1ubermock.client.add.assert_called_once_with(login='test')ubermock.client.add.assert_called_once_with_exactly(login='test',password='abc')

要让python ubersmith提出响应者,请返回 ubermock.ResponseError

importubersmith.clientimportubersmith.exceptionsdeftest_unknown_client(ubermock):ubermock.client.get=ubermock.ResponseError('Invalid client!',1)withpytest.raises(ubersmith.exceptions.ResponseError):ubersmith.client.get(client_id=1234)

如果需要完全控制响应,可以返回整个 Ubersmith JSON响应:

importpytestimportubersmith.clientimportubersmith.exceptionsdeftest_unknown_client_raw(ubermock):ubermock.client.get.raw_response={'status':False,'data':'','error_message':'Invalid client','error_code':1,}withpytest.raises(ubersmith.exceptions.ResponseError):ubersmith.client.get(client_id=1234)

您甚至可以传递动态响应的调用:

importpytestimportubersmith.clientimportubersmith.exceptionsdeftest_dynamic_client(ubermock):defget_client(method,params,request,context):ifparams['client_id']=='1':return{'client_id':1}else:raiseubermock.ResponseError('Invalid client!',1)ubermock.client.get=get_clientassertubersmith.client.get(client_id=1)=={'client_id':1}withpytest.raises(ubersmith.exceptions.ResponseError):ubersmith.client.get(client_id=2)

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

推荐PyPI第三方库


热门话题
java Android操作共享首选项更新值   java是否可以在单个参数化测试之前执行一次方法?   Java创建临时文件   java字符串已定义但未解析?   java JOptionPane。showConfirmDialog返回int 01而不是字符串YN   java Unitronics OPC Server>JIException访问被拒绝   gzip使用Java组合压缩的gzip文本文件   java在灵活的环境中部署bigtable helloworld不起作用   aspectJ中的java字段读字段写访问   java Hibernate让它映射   找不到媒体类型为application/json、类型为class java的MessageBodyWriter。util。ArrayList   java在SpringMVC中将图像上传到服务器并在mysql数据库中存储引用   如何用Java制作自己的解释器?   java在移动应用程序上使用appium滚动并查找页面中的元素   java无法在重新启动springjdbc、CommonDBCP、tomcat时连接到数据库   java捕获非法argumentException的最佳方法是什么   设计模式避免Java代码重复的良好实践   Java ResourceBundle是如何实现的。getBundle加载属性文件?   java远程访问OpenMQ