用于执行断言并提供信息丰富的异常消息的包。
AssertionLib的Python项目详细描述
断言IB 3.1.3
用于执行断言并提供信息丰富的异常消息的包。在
安装
- PyPi:pip install AssertionLib
- GitHub:pip install git+https://github.com/nlesc-nano/AssertionLib
用法
所有可用断言方法的综合概述是 在documentation中提供。 一些基本断言的例子:
>>>importnumpyasnp>>>fromassertionlibimportassertion# Assert the output of specific callables>>>assertion.eq(5,5)# 5 == 5>>>assertion.lt(5,6)# 5 < 6>>>assertion.gt(6,5)# 5 > 6>>>assertion.isinstance(5,int)>>>assertion.hasattr(5,'__init__')>>>assertion.any([False,False,True])>>>assertion.isfinite(1.0)# Simply assert a value>>>assertion(5==5)>>>assertion(isinstance(5,int))# Apply post-processing before conducting the assertion>>>ar_large=np.ones(10)>>>ar_small=np.zeros(10)>>>assertion.gt(ar_large,ar_small,post_process=np.all)# all(ar_large > ar_small)# Perform an assertion which will raise an AssertionError>>>assertion.eq(5,6,message='Fancy custom error message')# 5 == 6Traceback(mostrecentcalllast):...AssertionError:output=eq(a,b);assertoutputexception:AssertionError=AssertionError('Fancy custom error message')output:bool=Falsea:int=5b:int=6
由于方法签名不正确而引发的AssertionError的几个示例:
^{pr2}$>>>fromassertionlibimportassertion>>>assertion.eq(5,5,5,5)Traceback(mostrecentcalllast):...AssertionError:output=eq(a,b,_a,_b);assertoutputexception:TypeError=TypeError('eq expected 2 arguments, got 4')output:NoneType=Nonea:int=5b:int=5_a:int=5_b:int=5
exception参数的演示。 提供异常类型将断言所提供的异常已引发 在断言过程中/之前:
>>>fromassertionlibimportassertion>>>len(5)Traceback(mostrecentcalllast):...TypeError:objectoftype'int'hasnolen()
>>>fromassertionlibimportassertion>>>assertion.len(5,exception=TypeError)# i.e. len(5) should raise a TypeError>>>assertion.len([5],exception=TypeError)Traceback(mostrecentcalllast):...AssertionError:output=len(obj);assertoutputexception:AssertionError=AssertionError("Failed to raise 'TypeError'")output:int=1obj:list=[5]
最后,可以使用以下两种自定义输出方式中的一种进行断言, 向AssertionManager.assert()提供可调用属性或创建自定义断言 方法并使用AssertionManager.add_to_instance()将其添加到实例中:
>>>fromassertionlibimportassertion>>>defmy_fancy_func(a:object)->bool:...returnFalse# Approach #1, supply to-be asserted callable to assertion.assert_()>>>assertion.assert_(my_fancy_func,5)Traceback(mostrecentcalllast):...AssertionError:output=my_fancy_func(a);assertoutputexception:AssertionError=AssertionError(None)output:bool=Falsea:int=5
>>>fromassertionlibimportassertion# Approach #2, permanantly add a new bound method using assertion.add_to_instance()>>>assertion.add_to_instance(my_fancy_func)>>>assertion.my_fancy_func(5)Traceback(mostrecentcalllast):...AssertionError:output=my_fancy_func(a);assertoutputexception:AssertionError=AssertionError(None)output:bool=Falsea:int=5
- 项目
标签: