测试子类初始化方法的清晰度

Clarity on Testing subclass init method

我是面向对象的新手。 我正在尝试测试我的 RightPyramid init 方法,不确定是否有办法像我的 RightPyramid init 没有任何参数。

from typing import List
from abc import ABCMeta, abstractmethod

class Triangle(metaclass=ABCMeta):
    def __init__(self, base: int, height: int) -> None:
        assert base >= 0, "base must be greater or equal to 0"
        assert height >= 0, "height must be greater or equal to 0"
        self.base = base
        self.height = height

    @abstractmethod
    def area(self) -> int:   
        pass


class RightPyramid(Triangle):
    def __init__(self):
        Triangle.__init__(self, 3, 2)

    def area(self):
        return 0.5 * self.base + self.height

测试RightPyramid,执行以下代码:

rp = RightPyramid()

实际上会调用RightPyramid.__init__()方法,self被实例替换并在rp变量中返回。

如果你想测试你的三角形基础 class 行为,你应该创建新的 class :

class TestInit(Triangle):
    def __init__(self):
        Triangle.__init__(self, -3, 2) # this should throw an assertion fail

t = TestInit()