首页 > 解决方案 > 使用鼻子python对圆进行单元测试

问题描述

定义一个鼻子测试类'TestCircleArea',它测试'area'方法的行为,具有以下测试:

  1. 定义一个鼻子测试方法'test_circlearea_with_random_numeric_radius',它创建一个半径为2.5的圆'c1',并检查其计算面积是否为19.63。
  2. 定义一个鼻子测试方法'test_circlearea_with_min_radius',它创建一个半径为0的圆'c2',并检查其计算面积是否为0。
  3. 定义一个鼻子测试方法'test_circlearea_with_max_radius',它创建一个半径为1000的圆'c3',并检查其计算面积是否为3141592.65。

我写了下面的鼻子测试方法。但它不起作用。请建议。

类圈:

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)

类TestCircleArea:

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

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

def test_circlearea_with_max_radius(self):
    c3 = Circle(1000)
    assert_equals(c3.area(),3141592.65)

标签: python-unittestnose

解决方案


类圈:

def __init__(self, radius):
    # Define initialization method:
    self.radius=radius
    if not isinstance(self.radius,(int,float)):
        raise TypeError("radius must be a number")
    elif(self.radius>1000 or self.radius<0):
        raise ValueError("radius must be between 0 and 1000 inclusive")
    else:
        pass

def area(self):
    # Define area functionality:
    y=math.pi*(self.radius**2)
    return round(y,2)

def circumference(self):
    # Define circumference functionality:
    x=math.pi*2*self.radius
    return round(x,2)
    

类TestCircleArea(unittest.TestCase):

def test_circlearea_with_random_numeric_radius(self):
    # Define a circle 'c1' with radius 2.5, and check if 
    # its area is 19.63.
    c1 = Circle(2.5)
    self.assertEquals(c1.area(),19.63)

def test_circlearea_with_min_radius(self):
    # Define a circle 'c2' with radius 0, and check if 
    # its area is 0.
    c2 = Circle(0)
    self.assertEquals(c2.area(),0)

def test_circlearea_with_max_radius(self):
    # Define a circle 'c3' with radius 1000.1. and check if 
    # its area is 3141592.65.
    c3 = Circle(1000)
    self.assertEquals(c3.area(),3141592.65)

推荐阅读