1.在python工程下新建5个python文件,discover.py,testCalc.py,testFact.py,testSeqSum.py,rundiscover.py,各文件代码如下:
discover.py
class Calc(object):
def add(self,x,y,*d): # *d 可变参数
result = x + y
for i in d:
result += i
return result
def mul(self,x,y):
result = x * y
testCalc.py
import unittest
from discover import Calc
class MyTestCase(unittest.TestCase):
c = None
@classmethod
def setUpClass(cls):
# 单元测试前创建Calc的实例
cls.c = Calc()
def testAdd(self):
#print("run add()")
self.assertEqual(MyTestCase.c.add(1,2,12),15,'test add fail')
testFact.py
import unittest
from functools import reduce
from discover import Calc
class MyTestCase(unittest.TestCase):
def setUp(self):
self.num = 5
def testFactorial(self):
# 生成一个递增序列
seq = range(1,self.num+1)
# 求阶乘
res = reduce(lambda x , y:x * y, seq)
# 断言阶乘结果
self.assertEqual(res,120,'断言阶乘结果错误!')
testSeqSum.py
import unittest
class MyTestCase(unittest.TestCase):
def testEqual(self):
seq = range(11)
self.assertEqual(sum(seq),55,'断言列表之和结果错误')
rundiscover.py
import unittest
if __name__ == '__main__':
testsuite = unittest.TestLoader().discover('.') # 默认为当前目录
unittest.TextTestRunner(verbosity=2).run(testsuite)
结果如下:
testAdd (testCalc.MyTestCase) ... ok
testFactorial (testFact.MyTestCase) ... ok
testEqual (testSeqSum.MyTestCase) ... ok
----------------------------------------------------------------------
Ran 3 tests in 0.000s
OK