首页 > 解决方案 > 在 python 中使用鼻子进行单元测试

问题描述

我一直在尝试解决这个问题很长时间,但是我认为我在某个地方出错了,我无法识别错误。

问题 :

定义一个具有以下规范的类' Circle ':

定义一个鼻子测试类“ TestingCircleCreation ”,它使用以下测试测试“ __init__ ”方法的行为:

我已经尝试过了,但它显示错误。

class Circle:

def __init__(self, radius):
    # Define the initialization method below
    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 the area functionality below
    return math.pi*(self.radius**2)
def circumference(self):
    return 2*math.pi*self.radius
    # Define the circumference functionality below
class TestingCircleCreation:
def test_creating_circle_with_numeric_radius(self):
    c1=Circle(2.5)
    assert c1.radius==2.5

def test_creating_circle_with_negative_radius(self):
    c1=Circle(2.5)
    assert c1.radius==2.5
    with assert_raises(ValueError):
        Circle(-2.5)


def test_creating_circle_with_greaterthan_radius(self):
    c1=Circle(2.5)
    assert c1.radius==2.5
    with assert_raises(ValueError):
        Circle(1000.1)

def test_creating_circle_with_nonnumeric_radius(self):
    c1=Circle(2.5)
    assert c1.radius==2.5
    with assert_raises(TypeError):
        Circle('hello')

标签: unit-testingnose

解决方案


class TestingCircleCreation:
def test_creating_circle_with_numeric_radius(self):
    c1=Circle(2.5)
    assert c1.radius==2.5

def test_creating_circle_with_negative_radius(self):
    with assert_raises(ValueError):
        Circle(-2.5)


def test_creating_circle_with_greaterthan_radius(self):
    with assert_raises(ValueError):
        Circle(1000.1)

def test_creating_circle_with_nonnumeric_radius(self):
    with assert_raises(TypeError):
        Circle('hello')

您在每种方法中再次创建一个半径为 2.5 的圆,然后检查它是否相等。这根本不需要其他方法。因此,您无法执行异常部分。试试上面的代码。


推荐阅读