【问题标题】:Define a nose test method inside a nose test class在鼻子测试类中定义鼻子测试方法
【发布时间】:2019-04-07 11:36:35
【问题描述】:

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

【问题讨论】:

  • 我能够让你的测试在鼻子测试中运行良好。您如何尝试运行测试?如果您的上述代码位于名为 test.py 的文件中,您应该能够使用 nosetests test.py 运行测试。
  • 我正在尝试使用 katacoda 完成 NOSE 测试。我无法通过它。我会更新我的代码。请建议

标签: python python-3.x nose


【解决方案1】:

要运行测试,您必须使用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() 方法的功能,going from red (failing test) to green (passing test)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多