簡體   English   中英

python 單元測試圈中的 AttributeError

[英]AttributeError in python unit-test circle

我必須對 python 中的圓進行單元測試,但我終生無法弄清楚為什么會出現此錯誤:

回溯(最近一次通話最后):

文件“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", line 5, in area return (self.radius * self.radius) * 3.141 AttributeError: 'int' object has no attribute '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()

您直接使用方法“area”而不實例化新的 object。

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”的圓圈,然后在上面測試方法區,這樣就解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM