完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
4个回答
|
|
uniittest:
unittest是python内置的单元测试框架,具有编写用例,组织用例,执行用例,输出测试报告等自动化框架的条件。 unittest中的5个重要概念:test Fixture,TestCase,TestSuite,TestLoder,TextTestRunner Test Fixture:搭建测试环境的准备及清理工作,准备执行测试需要的数据,环境等;使用方法setUp(),tearDown(),setUpClass(),tearDownClass();什么时候使用呢?比如说在这个测试用例中需要访问数据库,那么可以在setUp() 中建立数据库连接以及进行一些初始化,在tearDown()中清除在数据库中产生的数据,然后关闭连接。注意tearDown的过程很重要,要为以后的 TestCase留下一个干净的环境。 TestCase:一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试 代码 (run),以及测试后环境的还原(tearDown)。unittest中测试用例方法都是以test开头的,且执行顺序会按照方法名的ASCII值排序。 TestSuite:将多个测试用例集合到一起,可以是多个test case,也可以是testSuite,甚至可以test case和 test suite一起。 TestLoder:加载test case到test suite中 TextTestRunner:用来执行测试用例 TextTestResult:存储测试用例的执行结果 |
|
|
|
工作原理:
1.写好测试用例TestCase;注意测试类需要继承unittest.TestCase,一个函数一条测试用例,不能传参,只支持self参数,函数名必须用test 开头 2.将测试用例通过testLoder加载到TestSuit存储 3.通过TextTestRunner()来运行testSuit 4.通过TextTestResult()生成测试报告 5.整个过程集成在unittest.main()模块中 注:TestCase和TestSuit 可以是一个或多个 |
|
|
|
|
|
|
|
例:对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’) |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
“0元购”智元灵犀X1机器人,软硬件全套图纸和代码全公开!资料免费下载!
3429 浏览 2 评论
1394 浏览 0 评论
【实操文档】在智能硬件的大模型语音交互流程中接入RAG知识库
6690 浏览 1 评论
防止AI大模型被黑客病毒入侵控制(原创)聆思大模型AI开发套件评测4
1086 浏览 0 评论
不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)
3403 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:02 , Processed in 0.653082 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号