python单元测试框架unittest简单使用实例
初学菜鸟做的笔记,仅供参考,欢迎指正。
1. 先写一段简单的代码,用于测试。单元测试的本质是对类、函数做测试,所以写了个简单的类用于测试;
class MathMethod:
def add(self,a,b):
return a+b
def sub(self,a,b):
return a-b
2. 对步骤1中的代码进行单元测试编码:
第一版代码没有进行参数化,第二版进行了参数化及测试结果输出(见第3个步骤);
只展示了第二版,详情见代码注释;
import unittest # 导入unittest库
from mathfortest import MathMethod # 模块引入
class TestMathMethod(unittest.TestCase): # 创建一个类,继承unittest.TestCaseunittest.TestCase
def __init__(self,methodname,a,b,expd): # 超继承,重写类,引入参数
super(TestMathMethod, self).__init__(methodname) # 理解之前,记住写法
self.a=a
self.b=b
self.expd=expd
def test_add(self): # 测试MathMethod类中的加法用例
res=MathMethod().add(self.a,self.b) # 创建一个MathMethod的实例res,并调用了其中的add方法,传递参数a,b
print("相加等于----------------",res) # 打印实际值 res
self.assertEquals(self.expd,res) # 做断言,对比实际值res与期望值expd
def test_sub(self): # 测试MathMethod类中的减法用例
res=MathMethod().sub(self.a,self.b) # 创建一个MathMethod的实例,并调用了其中的sub方法,传递参数a,b
print("相减等于----------------",res) # 打印实际值 res
self.assertEquals(self.expd,res) # 做断言,对比实际值res与期望值expd
if __name__ == '__main__': # TestMathMethod类的入口,做调用,不写不能调用,记住先
unittest.main()
3. 写一段测试结果输出的代码,文本格式及网页格式;
import unittest # 导入unittest库
from HTMLTestRunner import HTMLTestRunner # 导入HTMLTestRunner中的HTMLTestRunner方法
from baili_test2 import TestMathMethod # 导入baili_test2中的TestMathMethod类
suite=unittest.TestSuite() # 收集测试用例的写法
# #第一种方法,在单元测试用例代码还没有做参数化时使用的
# loader=unittest.TestLoader()
# suite.addTest(loader.loadTestsFromTestCase(TestMathMethod)) # 加载测试用例
# 第二种方法, 单元测试用例代码已参数化用这种方法
suite.addTest(TestMathMethod('test_add',0,0,0)) # 传参并加载测试用例
suite.addTest(TestMathMethod('test_sub',3,1,2))
# 生成测试报告
# 文本格式的报告
# file=open('test_result_1.txt','w+')
# runner=unittest.TextTestRunner(stream=file,verbosity=2)
# 网页格式报告
file=open('test_result_1.html','w+', encoding='utf-8') # 记住写法,指定编码解决中文乱码问题
runner=HTMLTestRunner.HTMLTestRunner(stream=file, verbosity=2) # verbosity=2 指定报告的详略程度
runner.run(suite)
4. 在pycharm左侧找到test_result_1.html文件,在浏览器中打开,可查看测试报告。
分类:
实践
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?