例:对MathMethod进行单元测试
MathMethod.py
class MathMethod:
def __init__(self,a,b):
self.a=a
self.b=b
def add(self):
return self.a+self.b
def sub(self):
return self.a-self.b
def multi(self):
return self.a*self.b
testMathMethod.py
import unittest
import os,sys
current_dir=os.path.dirname(os.path.abspath(__file__))
#print(current_dir)
sys.path.append(current_dir)
#print(sys.path)
from MathMethod import MathMethod
class testMathMethod(unittest.TestCase):
def test_add_integer(self):
res=MathMethod(3,5).add()
self.assertEqual(8,res)
def test_add_zero(self):
res=MathMethod(0,0).add()
self.assertEqual(0,res)
执行测试用例:
runTest.py
import unittest,os,sys
dir_path=os.path.dirname(os.path.abspath(__file__))
sys.path.append(dir_path)
from testMathMethod import testMathMethod
import testMathMethod
#方法一,使用testSuit添加测试用例执行
suit=unittest.TestSuite() #创建一个suit集 存储测试用例
suit.addTest(testMathMethod(‘test_add_integer’)) #添加测试用例
suit.addTest(testMathMethod(‘test_add_zero’))
run=unittest.TextTestRunner() #实例 TextTestRunner()
run.run(suit) #执行测试
#方法二 ,使用testLoder加载测试用例到testSuit执行
loder=unittest.TestLoader() #创建一个加载器
#suit.addTest(loder.loadTestsFromTestCase(testMathMethod)) #通过测试用例名加载测试用例
suit.addTest(loder.loadTestsFromModule(testMathMethod)) #通过模块名加载 测试用例,导入时直接导入模块
run=unittest.TextTestRunner()
run.run(suit)
#生成测试报告
with open(‘test_result.txt’,‘w+’) as file:
loder=unittest.TestLoader() #创建一个加载器
suit.addTest(loder.loadTestsFromModule(testMathMethod))
runner=unittest.TextTestRunner(file,verbosity=2,descriptions=‘测试报告’)
#verbosity 默认为1,0输出测试执行结果,1 输出测试失败的详细信息 2 输出详细测试执行结果
runner.run(suit)
#自动根据测试用例路径匹配查找测试用例文件(test*.py),并将查找到的测试用例添加到测试套件
suit2=unittest.defaultTestLoader.discover(filepath,pattern=‘test*.py’)