具有轻松风格的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如何为ConcurrentHashMap使用并设置适当的并发级别?   java泛型方法,运行时错误,   java在页面上显示加载的图像   java Paypal定期直接支付问题   java如何延迟重新绘制组件   JavaSpringBoot+Hibernate如何维护@Transient字段   java在其方法中获取关于类的信息   在java中将别名添加到枚举   java如何解决向google报告成绩时“需要重新连接客户端”的问题   清晰的java图像背景   java未找到适合JDateChooser的构造函数(字符串、字符串、字符)   java LRU缓存实现。某些测试用例的代码失败   if语句Java嵌套的if/Else条件   java JSoup“wrap”并非每次都按预期工作   Java Spring引导循环依赖于一个环境   ssl证书无法通过Java和IntelliJ连接到SOAP服务   带整数验证的Java扫描器   java在Flex中呈现具有动态列的datagrid   java Android:通过用户选择的选项将文件上载到服务器   子类中的java抛出错误、异常和运行时异常