具有轻松风格的python模拟库

mockaccino的Python项目详细描述


mockaccino 0.1
作者paolo victor-paolovictor@gmail.com


一个python模拟库,其语法类似于easymock java模拟库。

为要模拟的类创建模拟对象
2。在此模拟上调用方法,应用修饰符,例如调用将返回的内容以及调用将发生的次数
3。将模拟设置为重播模式
4。继续测试。对模拟对象的方法的调用将按顺序匹配,除非使用“always”修饰符记录调用(稍后将详细介绍)


code example



class calc(object):
def sum(self,a,b):
return a+b

def是偶数(self,n):
返回n%2==0

mock=mockaccino.create_mock(calc)


mock.sum(1,1)。will_return(3)。always()
mock.is_even(2)。will_return(false)
mock.is_even(3)。will_return(true)


print mock.sum(1,1)打印3
打印模拟。是否均匀(2)打印假
打印模拟。和(1,1)打印3
打印mock.is_even(3)打印true


1

用法


这意味着所有即将进行的调用都将与录制的调用匹配

recording mock

例如:

mock=mockaccino.create_mock(stringio.stringio)
mock.getvalue()
mock.replay()

为stringio.stringio类创建一个mock,将其配置为期望getvalue被调用一次并将其置于重播模式。您还可以为期望值指定参数,这些参数将在重播模式下匹配:

mock.sum(2,2)
mock.replay()
mock.sum(1,2)除了定义方法调用的预期参数外,还将引发意外调用错误


,您可以配置其他行为,如返回什么值、需要多少调用以及调用是否引发错误:

mock.sum(2,2)。will_return(5)
mock.sum(1,1)。will_return(2)。times(2)
mock.sum(0,“cat”).will_raise(valueerror).always()
mock.replay()
mock.sum(2,2)将返回5,因为我更喜欢这样做
mock.sum(1,1)
mock.sum(1,1)
mock.sum(1,1)将引发错误,sum(1,1)只在sum(2,2)
mock.sum(0,“cat”)这将导致valueerror

请注意,在设置“always”修饰符之后,不能为该方法记录任何其他行为,反之亦然。


>当前实现的期望修饰符是:

*times(n)-“每当调用此方法时,将调用此方法n次”
*always()-“,这是预期行为“
*将返回(x)-“此方法将返回x”
*将提高(e)-“此方法将引起错误e”


int value”

示例:


from mockaccino.matchers import any

mock.sum(any(int),2).将返回(5).always()
mock.replay()
mock.sum(3,2)返回5
mock.sum(2,2)返回5
mock.sum(3,1)引发未预期的调用方错误

当前唯一实现的匹配器是:

*任意(类型)-“值应为类型”类型
roadmap


1。添加对“magic method”(uuu eq_uuu,uuu str_uuu等)mocking
2的支持。实现一个“verify”方法,检查是否有不匹配的调用

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

推荐PyPI第三方库


热门话题
java在滚动视图中,我需要将图像高度设置为设备的活动高度   JavaSpring引导忽略应用程序中的数据源url。yml   java如何使用常量输入多个@CrossOrigins?   java无法在Android Stduio[libGDX]中“构建APK”   java在哪里设置EJB3客户端的webservice主机名   java不能在j2me应用程序中使用图像   java从对象中检索bean属性值   java在Microsoft botframework Android虚拟助手客户端中提供语音通道机密   匿名类中的java限制   java如何判断是否安装了JRE或JDK   java字符串和循环实践测试   tomcat中的java springboot循环依赖