【问题标题】:AttributeError in python unit-test circlepython单元测试圈中的AttributeError
【发布时间】:2022-01-22 20:21:07
【问题描述】:

我必须在 python 中对 circle 进行单元测试,但我一生都无法弄清楚为什么会出现此错误:

Traceback(最近一次通话最后一次):

文件“c:\Users\User\Desktop\Domaci\Preadvanje 8\circle_unittest.py”,第 6 行,在 test_area self.assertEqual(circle.area (2),12.564) 文件“c:\Users\User\Desktop\Domaci\Preadvanje 8\class_circle.py”,第 5 行,在区域中 返回 (self.radius * self.radius) * 3.141 AttributeError: 'int' 对象没有属性 'radius'

圈子代码:

class circle:
    def __init__(self,radius):
        self.radius = radius
    def area(self):
        return (self.radius * self.radius) * 3.141
    def perimeter(self):
        
        return (2 * self.radius) * 3.141     
r = int(input("Input r: "))
newcircle = circle(r)  
print ("Area of the circle is: ", newcircle.area())
print("Perimeter of the circle is: ", newcircle.perimeter())

测试代码:

import unittest
from unittest.case import TestCase
from class_circle import circle
class test_circle(unittest.TestCase):
    def test_area(self):
        self.assertEqual(circle.area (2),12.564)
    def test_perimeter(self):
        self.assertEqual(circle.perimeter(2), 12.564)
if __name__ == '__main__':
    unittest.main()

【问题讨论】:

    标签: python unit-testing


    【解决方案1】:

    您直接使用方法“area”而不实例化新对象。

    class test_circle(unittest.TestCase):
        def test_area(self):
            c = circle(2)
            self.assertEqual(c.area (2),12.564)
        def test_perimeter(self):
            c = circle(2)
            self.assertEqual(c.perimeter(2), 12.564)
    

    在上面的代码中,我们先创建了一个叫做“c”的圆圈,然后在上面测试方法区,解决了这个问题。

    【讨论】:

    • 谢谢老哥!!!唯一的问题是 c.area() 应该没有括号中的参数。
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 2021-03-14
    • 2020-05-03
    相关资源
    最近更新 更多