Python如何写关于抽象类的单元测试?

从abc中import了ABCMeta和abstractmethod,实现了一个抽象类,目前想用nose(目前仅仅是unittest)对这个类进行单元…
关注者
4
被浏览
1,502

1 个回答

已解决,raise NotImplementedError,通过一个子类来实例方法。

————————————————————————————————————————

算了,补充完整吧:

1、一般来说抽象类是没有实例化方法的,这个和单纯的abstractmethod不同,abstractmethod会在调用的时候检验是否实现功能,所以如果想要测试抽象类中的抽象方法,需要子类继承这个抽象类。

2、继承了以后调用方法单纯的pass是看不出来效果的,raise的方法可以抛出异常,这样可以通过捕获异常进行测试。Nose中nose.tools提供了raises的装饰器,在测试函数前添加raise的异常就可以检验到该抽象类是否被调用到。

注:

1、关于异常,NotImplementedError比较恰当,官方文档有说明:

exception NotImplementedError
This exception is derived from RuntimeError. In user defined base classes, abstract methods should raise this exception when they require derived classes to override the method.