Определите метод проверки носа внутри класса проверки носа - PullRequest
1 голос
/ 07 апреля 2019

Определить метод проверки носа test_circlearea_with_min_radius, который создает круг c2 с радиусом 0 и проверяет, соответствует ли его вычисленная площадь значению 0

Я написал приведенный ниже код, но все равно не получаю желаемого результата:

import math
from circle import Circle
from nose.tools import assert_raises
from nose.tools import assert_equal


class Circle:

    def __init__(self,radius):

        if not isinstance(radius,(int,float)):
            raise TypeError("radius must be a number")

        if not 1000>=radius>=0:
            raise ValueError("radius must be between 0 and 1000 inclusive")

        self.radius = radius


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

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


class TestCircleArea:

    def test_circlearea_with_random_numeric_radius(self):
        c1=Circle(2.5)
        assert_equal(c1.area(),19.63)

    def test_circlearea_with_min_radius(self):
        c2=Circle(0)
        assert_equal(c2.area(),0)

1 Ответ

0 голосов
/ 07 апреля 2019

Чтобы запустить тест, вам нужно выполнить файл с nose; Вы не можете выполнить его как обычный скрипт на Python. Например, если код из вашего поста находится в файле с именем test.py, вы можете выполнить следующую команду:

nosetests test.py

Если вы запустите команду python test.py, вы не получите никакого вывода. В зависимости от того, как вы назвали свои файлы и т. Д., Вы должны просто иметь возможность запускать nosetests без аргументов, и обнаружение теста носа должно быть достаточно умным, чтобы найти ваш тестовый класс и запустить тест. Кроме того, убедитесь, что вы импортируете / определяете свой класс Circle перед запуском на нем тестов, иначе вы получите сообщение об ошибке.

Если вы пытались написать класс Circle самостоятельно и хотели создать его с помощью TDD, то можете начать с чего-то вроде этого:

class Circle:
    def __init__(*args):
        pass

    def area(self):
        pass

from nose.tools import assert_equals
class TestCircleArea:

    def test_circlearea_with_random_numeric_radius(self):
        c1=Circle(0)
        assert_equals(c1.area(),0)

Это даст вам неудачный тест, и вы сможете начать строить функциональность метода area() оттуда, переходя от красного (неудачный тест) к зеленому (проходящий тест) .

...