我编写了代码以测试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()
答案 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
。
任何实例方法的第一个参数都是隐式的,因此无需像调用Circle
,circle = Circle(self, r=1)
的构造函数时那样自己传递。应该是circle = Circle(r=1)
。
使用所有这些修复程序,您要测试的代码应全部通过。
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()