python 17篇 unittest单元测试框架
单元测试:开发程序的人自己测试自己的代码
unittest自动化测试框架
1、单元测试
import unittest def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): '''测试add方法''' def test_add_normal(self): # 测试用例必须以test开头 '''正常测试加法用例''' result = add(1, 2) self.assertEqual(3, result) def test_add_error1(self): '''测试失败加法用例''' result = add(1, 2) self.assertEqual(4, result) def test_add_error2(self): '''测试失败加法用例有msg''' result = add(1, 2) self.assertEqual(5, result, '正常用例,没有通过') def test_param_add(self, a, b, c): result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result)) if __name__ == '__main__': # 不产生测试用例,执行所有测试用例 unittest.main()
2、产生测试报告
2.1 HTMLTestRunnerNew
下载HTMLTestRunnerNew.py放到python的环境变量里
import unittest import HTMLTestRunner import HTMLTestRunnerNew def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): '''测试add方法''' def test_add_normal(self): # 测试用例必须以test开头 '''正常测试加法用例''' result = add(1, 2) self.assertEqual(3, result) def test_add_error1(self): '''测试失败加法用例''' result = add(1, 2) self.assertEqual(4, result) def test_add_error2(self): '''测试失败加法用例有msg''' result = add(1, 2) self.assertEqual(5, result, '正常用例,没有通过') def test_param_add(self, a, b, c): result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result)) if __name__ == '__main__': # 不产生测试用例 # unittest.main() # 执行某条或几条测试用例 # test_suit = unittest.TestSuite() # test_suit.addTest(TestAdd('test_add_error1')) # test_suit.addTest(TestAdd('test_add_normal')) # 执行某个类中所有测试用例 test_suit = unittest.makeSuite(TestAdd) # 查找某个目录下的测试用例 # test_suit = unittest.defaultTestLoader.discover('case', 'test*.py') with open('report.html', 'wb') as fw: runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fw, title='tmz测试报告', description='tmz接口测试报告', verbosity=2) runner.run(test_suit)
测试报告如何打开查看:
1.选中文件--右键--Copy Path...--拷贝路径--放到浏览器中打开
2.双击测试报告--在测试报告的html脚本中移动鼠标--会弹出浏览器的选项--选择对应的浏览器打开
执行的测试报告如图所示:
2.1 HTMLTestRunner
下载HTMLTestRunner.py放到python的环境变量里
import unittest import HTMLTestRunner import HTMLTestRunnerNew def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): '''测试add方法''' def test_add_normal(self): # 测试用例必须以test开头 '''正常测试加法用例''' result = add(1, 2) self.assertEqual(3, result) def test_add_error1(self): '''测试失败加法用例''' result = add(1, 2) self.assertEqual(4, result) def test_add_error2(self): '''测试失败加法用例有msg''' result = add(1, 2) self.assertEqual(5, result, '正常用例,没有通过') def test_param_add(self, a, b, c, desc): self._testMethodDoc = desc result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result)) if __name__ == '__main__': # 不产生测试用例 # unittest.main() # 执行某条或几条测试用例 # test_suit = unittest.TestSuite() # test_suit.addTest(TestAdd('test_add_error1')) # test_suit.addTest(TestAdd('test_add_normal')) # 执行某个类中所有测试用例 test_suit = unittest.makeSuite(TestAdd) # 查找某个目录下的测试用例 # test_suit = unittest.defaultTestLoader.discover('case', 'test*.py') with open('report.html', 'wb') as fw: runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title = 'tmz测试报告',description= 'tmz接口测试报告',verbosity=2) runner.run(test_suit)
测试报告如何打开查看:
1.选中文件--右键--Copy Path...--拷贝路径--放到浏览器中打开
2.双击测试报告--在测试报告的html脚本中移动鼠标--会弹出浏览器的选项--选择对应的浏览器打开
执行的测试报告如图所示:
3、参数化
import unittest import HTMLTestRunner import HTMLTestRunnerNew import parameterized def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): @parameterized.parameterized.expand( [ [1, 2, 3, '参数化说明1'], [-1, 2, 1, '参数化说明2'], [-1, 2, 2, '参数化说明3'] ] ) def test_param_add(self, a, b, c, desc): self._testMethodDoc = desc result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)