Python 单元测试获胜';t运行测试

Python 单元测试获胜';t运行测试,python,Python,我编写代码是为了测试Circle类方法percentry()和area()是否返回正确的输出。当单元测试类运行时,它表示已经运行了0个测试 class Circle: def __init__(self, r=1): self.radius = r def serRadius(self, r): self.radius = r def getRadius(self): return self.radius def area(self): re

我编写代码是为了测试
Circle
类方法
percentry()
area()
是否返回正确的输出。当单元测试类运行时,它表示已经运行了0个测试

class Circle:

def __init__(self, r=1):
     self.radius = r

 def serRadius(self, r):
     self.radius = r

 def getRadius(self):
     return self.radius

 def area(self):
     return 3.14 * self.radius * self.radius

 def circumference(self):
     return 2 * 3.14 * self.radius


import unittest

from Circle import Circle

class TestCircleMethods(unittest.TestCase):

    def setUp(self):
        print('\nsetUP')
        circle = Circle(self, r=1)

    def tearDown(self):
        print('tearDown\n')


    def test_area(self):
        print('Test Area\n')
        assertEqual(circle.area(), 3.14)

    def test_circumference(self):
        print('Test Cirumference\n')
        assertEqual(circle.circumference(), 6.28)



    if __name__ == '__main__':
       unittest.main()

您在测试中的一些地方缺少了
self
。另外,
Circle(self,r=1)
应该是
Circle(r=1)
。缩进似乎也错了,但我不确定在复制粘贴代码时是否发生了这种情况。你也可以再检查一遍

这项工作:

class Circle:

    def __init__(self, r=1): self.radius = r

    def serRadius(self, r): self.radius = r

    def getRadius(self): return self.radius

    def area(self): return 3.14 * self.radius * self.radius

    def circumference(self): return 2 * 3.14 * self.radius

import unittest

class TestCircleMethods(unittest.TestCase):

    def setUp(self):
        print('\nsetUP')
        self.circle = Circle(r=1)

    def tearDown(self):
        print('tearDown\n')


    def test_area(self):
        print('Test Area\n')
        self.assertEqual(self.circle.area(), 3.14)

    def test_circumference(self):
        print('Test Cirumference\n')
        self.assertEqual(self.circle.circumference(), 6.28)



if __name__ == '__main__':
   unittest.main()

assertEqual
基本上是
unittest.TestCase
的类实例方法。因此,您必须将它们称为self.assertEqual

任何实例方法的第一个参数都是隐式的,因此无需像调用
Circle
Circle=Circle(self,r=1)
的构造函数那样自行传递。它应该是
circle=circle(r=1)

有了所有这些修复,您要测试的代码应该通过所有测试

卷轴 ciricle_test.py
class Circle:
    def __init__(self, r=1):
        self.radius = r

    def setRadius(self, r):
        self.radius = r

    def getRadius(self):
        return self.radius

    def area(self):
        return 3.14 * self.radius * self.radius

    def circumference(self):
        return 2 * 3.14 * self.radius
import unittest

from circle import Circle

class TestCircleMethods(unittest.TestCase):
    def setUp(self):
        print('\nsetUP')
        self.circle = Circle(1)

    def tearDown(self):
        print('tearDown\n')


    def test_area(self):
        print('Test Area\n')
        self.assertEqual(self.circle.area(), 3.14)

    def test_circumference(self):
        print('Test Cirumference\n')
        self.assertEqual(self.circle.circumference(), 6.28)


if __name__ == '__main__':
    unittest.main()