Модульное тестирование методов определения внутри класса с использованием документирования - PullRequest
1 голос
/ 02 апреля 2019

Мне нужно определить: 1. doctest для ' init ', который создает круг 'c1' с радиусом 2.5 и проверяет, что доступ к атрибуту 'radius' возвращает 2.5.2. Определите doc-тест для 'area', который создает круг 'c1' с радиусом 2.5 и проверяет, что его вычисляемая область составляет 19,63.

Я написал нижеприведенный код, но не получил вывод.Пожалуйста, предложите.

class Circle:

    def __init__(self, radius):

        """
        >>> c1=Circle(2.5).__init__()
        2.5
        """
        self.radius = radius

    def area(self):

        """
        >>> c1=Circle(2.5).area()
        19.63

        """

        return round(math.pi*(self.radius**2),2)

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

__init__() не возвращает радиус, скорее объект Circle, который вы создали.Если вы обновите документ до что-то вроде

>>> Circle(2.5).radius
2.5

, оно должно работать.Также обратите внимание, что вы не должны вызывать __init__() напрямую, это то, что делает Circle(2.5).В вашем случае вы должны получить ошибку, поскольку вы не передаете нужное количество аргументов.

1 голос
/ 03 апреля 2019

Вот как, вероятно, можно написать ваш класс с doctests:

import math

class Circle:

    def __init__(self, radius):

        """
        >>> c1 = Circle(2.5)
        >>> c1.radius
        2.5
        """
        self.radius = radius

    def area(self):

        """
        >>> c1 = Circle(2.5)
        >>> c1.area()
        19.63

        """

        return round(math.pi*(self.radius**2),2)

И вот как вы должны запустить doctest, чтобы получить подробный вывод:

$ python -m doctest -v file.py
Trying:
    c1 = Circle(2.5)
Expecting nothing
ok
Trying:
    c1.radius
Expecting:
    2.5
ok
Trying:
    c1 = Circle(2.5)
Expecting nothing
ok
Trying:
    c1.area()
Expecting:
    19.63
ok
2 items had no tests:
    file
    file.Circle
2 items passed all tests:
   2 tests in file.Circle.__init__
   2 tests in file.Circle.area
4 tests in 4 items.
4 passed and 0 failed.
Test passed.
...