定义鼻子测试方法test_circlearea_with_min_radius
,该方法将创建一个半径为0的圆c2
,并检查其计算面积是否与值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)
答案 0 :(得分:0)
要运行测试,您必须使用nose
执行文件;您无法像普通的python脚本一样执行它。例如,如果帖子中的代码位于名为test.py
的文件中,则可以运行以下命令:
nosetests test.py
如果运行命令python test.py
,将不会获得任何输出。根据文件的命名方式等,您应该只可以不带任何参数地运行nosetests
,并且鼻子的测试发现应该足够聪明以找到您的测试类并运行测试。另外,请确保在导入{/ {1}}类之前对其进行测试,否则您将得到错误提示。
如果您尝试自己编写Circle
类,并想用TDD以一种有趣的方式构建它,则可以从以下内容开始:
Circle
这会给您带来失败的测试,并且您可以从going from red (failing test) to green (passing test)开始构建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)
方法的功能。