python-unittest - 使用鼻子python对圆进行单元测试
问题描述
定义一个鼻子测试类'TestCircleArea',它测试'area'方法的行为,具有以下测试:
- 定义一个鼻子测试方法'test_circlearea_with_random_numeric_radius',它创建一个半径为2.5的圆'c1',并检查其计算面积是否为19.63。
- 定义一个鼻子测试方法'test_circlearea_with_min_radius',它创建一个半径为0的圆'c2',并检查其计算面积是否为0。
- 定义一个鼻子测试方法'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)
解决方案
类圈:
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)
推荐阅读
- typescript2.0 - 无法执行打字稿功能
- c# - 为查询类型 Ef core 2.1 初始化数据
- stenciljs - 模板父组件变量更改不刷新子组件
- symfony - 如何使用 YAML 映射实现“alsoLoad”(Symfony)
- javascript - ( item.area_partition.homepage_show || item.area_partition.name ) 不符合我的要求
- bootstrap-confirmation - 根据条件启用/禁用按钮上的引导确认
- django - Talend ETL-postgres(django 框架)的问题日期导入
- php - 按相同的数组值计算多维数组值
- python - 如何用 PySide 连接两个不同的小部件?
- java - Spring Batch 将并发线程数限制为 10