python - 在鼻子测试类中定义鼻子测试方法
问题描述
定义一个鼻子测试方法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)
解决方案
要运行测试,您必须使用nose
;执行文件。你不能像普通的 python 脚本一样执行它。例如,如果您帖子中的代码位于名为 的文件中test.py
,您可以运行以下命令:
nosetests test.py
如果您运行该命令python test.py
,您将不会得到任何输出。根据您命名文件的方式等,您应该能够在nosetests
没有参数的情况下运行,并且nose 的测试发现应该足够聪明,可以找到您的测试类并运行测试。此外,请确保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()
从那里开始构建方法的功能,从红色(失败测试)变为绿色(通过测试)。
推荐阅读
- sql - SQL,如果excel单元格为空,则填充另一个excel单元格
- javascript - React 中的图像 onError 处理
- node.js - 运行时 Google Speech API React-Native 错误
- facebook-graph-api - 图形 api 通过共享对话获取上传到 Facebook 的视频列表
- python-3.x - 安装 pip 和 pandas_ml 时遇到问题(Windows、Python)
- delphi - Delphi:为什么我不能在 DYLIB 中使用 FMX.FORMS
- python - do_POST 出现异常时多次执行
- javascript - ReactJS在子组件内两次调用函数未能两次设置父状态
- python - 如何为 Authenticated API GET 请求设置请求标头
- python - 输入后硒停止