Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Unittest在Python中测试TestareAreation时出错_Python_Python 3.x_Unit Testing - Fatal编程技术网

使用Unittest在Python中测试TestareAreation时出错

使用Unittest在Python中测试TestareAreation时出错,python,python-3.x,unit-testing,Python,Python 3.x,Unit Testing,问题: 用init方法定义一个类圆,该方法用 属性半径,具有以下限制 半径必须是数值,如果不是,则引发类型错误,并显示错误消息“半径必须是数字” 两侧的半径必须介于0到1000之间(包括0到1000之间),如果不升高值,则会显示错误消息“半径必须介于0到1000之间” 1000英镑(含1000英镑) 定义一个类方法面积和周长,它必须返回舍入到2位小数的值 完成TestCircleArea类的定义,该类测试 面积法的性能如以下规范所示 定义测试方法test_circlearea_和随机数字半径 这

问题:

用init方法定义一个类圆,该方法用 属性半径,具有以下限制

  • 半径必须是数值,如果不是,则引发类型错误,并显示错误消息“半径必须是数字”
  • 两侧的半径必须介于0到1000之间(包括0到1000之间),如果不升高值,则会显示错误消息“半径必须介于0到1000之间” 1000英镑(含1000英镑)
  • 定义一个类方法面积和周长,它必须返回舍入到2位小数的值
  • 完成TestCircleArea类的定义,该类测试 面积法的性能如以下规范所示

    定义测试方法test_circlearea_和随机数字半径 这将创建半径为2.5的圆c1,并检查其计算面积 匹配值19.63

    定义测试方法test_circleareaea_,使用创建 以半径0圈出c2,并检查其计算面积是否与该值匹配 0

    定义测试方法test_circleareaea_,使用创建 用半径1000圈出c3,并检查其计算面积是否与 价值3141592.65

    尝试过的解决方案:

    import inspect
    import re
    import unittest
    import math
    
    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 TestCircleArea(unittest.TestCase):
    
        def test_circlearea_with_random_numeric_radius(self):
            # Define a circle 'c1' with radius 2.5, and check if 
            # its area is 19.63.
            c1=Circle(2.5)
            self.assertEqual(c1.area(), 2.5)
    
        def test_circlearea_with_min_radius(self):
            # Define a circle 'c2' with radius 0, and check if 
            # its area is 0.
            c2=Circle(0)
            self.assertEqual(c2.area(), 0)
    
        def test_circlearea_with_max_radius(self):
            # Define a circle 'c3' with radius 1000.1. and check if 
            # its area is 3141592.65.
            c3=Circle(1000)
            self.assertEqual(c3.area(), 3141592.65)
    
    if __name__ == '__main__':
    
        fptr = open('output.txt', 'w')
    
        runner = unittest.TextTestRunner(fptr)
    
        unittest.main(testRunner=runner, exit=False)
    
        fptr.close()
    
        with open('output.txt') as fp:
            output_lines = fp.readlines()
    
    
        pass_count = [ len(re.findall(r'\.', line)) for line in output_lines if line.startswith('.')
                         and line.endswith('.\n')]
    
        pass_count = pass_count[0]
    
        print(str(pass_count))
    
        doc1 = inspect.getsource(TestCircleArea.test_circlearea_with_random_numeric_radius)
        doc2 = inspect.getsource(TestCircleArea.test_circlearea_with_min_radius)
        doc3 = inspect.getsource(TestCircleArea.test_circlearea_with_max_radius)
    
        assert1_count = len(re.findall(r'assertEqual', doc1))
    
        print(str(assert1_count))
    
        assert1_count = len(re.findall(r'assertEqual', doc2))
    
        print(str(assert1_count))
    
        assert1_count = len(re.findall(r'assertEqual', doc3))
    
        print(str(assert1_count))
    
    导入检查
    进口稀土
    导入单元测试
    输入数学
    班级圈子:
    定义初始(自身,半径):
    #在下面定义初始化方法
    自半径=半径
    如果不是恒定(自半径,(int,float)):
    raise TypeError(“半径必须是数字”)
    
    elif(self.radius>1000或self.radius我刚刚修改了init方法,它在黑客级别对我有效

    班级圈子:

    def __init__(self, radius):
        # Define the initialization method below
        pattern=re.compile("^\\-?[0-9]")
        if(pattern.math(str(radius))):
            if(radius>=0 and radius<=1000):
                self.radius=radius
            else:
                raise ValueError("radius must be between 0 and 1000 inclusive")
        else:
            raise TypeError("radius must be a number")
    
    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
    
    def\uuuu初始(自,半径):
    #在下面定义初始化方法
    模式=重新编译(“^\\-?[0-9]”)
    if(pattern.math(str(radius)):
    如果(radius>=0和radius),则必须指定返回语句
    类TestCircleArea(unittest.TestCase):

    def __init__(self, radius):
        # Define the initialization method below
        pattern=re.compile("^\\-?[0-9]")
        if(pattern.math(str(radius))):
            if(radius>=0 and radius<=1000):
                self.radius=radius
            else:
                raise ValueError("radius must be between 0 and 1000 inclusive")
        else:
            raise TypeError("radius must be a number")
    
    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
    
    def test_circlearea_with_random_numeric_radius(self):
        # Define a circle 'c1' with radius 2.5, and check if 
        # its area is 19.63.
        c1=Circle(2.5)
        return c1.area
        return self.assertEqual(c1.area,19.3)
    def test_circlearea_with_min_radius(self):
        # Define a circle 'c2' with radius 0, and check if 
        # its area is 0.
        c2=Circle(0)
        return c2.area
        return self.assertEqual(c2.area,0)
    def test_circlearea_with_max_radius(self):
        # Define a circle 'c3' with radius 1000.1. and check if 
        # its area is 3141592.65.   
        c3=Circle(1000)
        return c3.area
        return self.assertEqual(c3.area,3141592.65)