单元测试不会运行测试

时间:2019-04-24 20:14:08

标签: python

我编写了代码以测试Circle类方法circumference()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()

2 个答案:

答案 0 :(得分:2)

您在测试中的某些地方缺少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()

答案 1 :(得分:0)

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

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

使用所有这些修复程序,您要测试的代码应全部通过。

ciricle.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

ciricle_test.py

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()