用Python测试抽象类

2024-04-23 10:57:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python(2.7)中的抽象类创建了一个类,现在我想通过Nose测试这个类。如何从技术上实施?在

这里我给出一个示例代码:

# -*- coding: utf-8 -*-
from abc import ABCMeta, abstractmethod, abstractproperty


class A(object):

    __metaclass__ = ABCMeta

    @abstractproperty
    def a(self):
        pass

    @abstractmethod
    def do(self, obj):
        pass

Tags: 代码fromimportself示例def抽象类pass
1条回答
网友
1楼 · 发布于 2024-04-23 10:57:32

您可以创建抽象类的子类并测试子类。另外,在调用抽象方法时,可以引发一个NotImplementedError,而不是pass

@abstractproperty
def a(self):
    raise NotImplementedError("Not implemented")

@abstractmethod
def do(self, obj):
    raise NotImplementedError("Not implemented")

Python exceptions documentation所述:

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.

然后实现一个子类:

^{pr2}$

你可以这样测试:

@raises(NotImplementedError)
def abstractPropertyAShouldNotRun():
    B().a()

@raises(NotImplementedError)
def abstractMethodDoShouldNotRun():
    obj = []
    B().do(obj)

相关问题 更多 >