Ясность в тестировании метода инициализации подкласса - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в объектно-ориентированном программировании. Я пытаюсь протестировать свой метод инициализации RightPyramid, но не уверен, есть ли способ сделать это, поскольку инициализация RightPyramid не имеет аргументов.

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

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Чтобы протестировать RightPyramid, выполнение следующего кода:

rp = RightPyramid()

фактически вызовет метод RightPyramid .__ init __ () с заменой self экземпляром и возвращением в переменной rp.

0 голосов
/ 10 мая 2020

Если вместо этого вы хотите протестировать поведение своего базового класса Triangle, вам следует создать новый класс:

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

t = TestInit()
...