繁体   English   中英

在鼻子测试类中定义鼻子测试方法

[英]Define a nose test method inside a nose test class

定义一个鼻子测试方法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)

要运行测试,您必须使用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()方法的功能, 从红色(失败测试)到绿色(通过测试)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM