Unittest
1.环境
Unittest为Python内嵌的测试框架,不需要特殊配置,仅需要在File---settings---Tools----Python Intergrated Tools下配置框架为Unittest
2.编写规范
- 需要导入 import unittest
- 测试类必须继承unittest.TestCase
- 测试方法以 test_开头
- 模块和类名没有要求
3.Unittest介绍
import unittest def add(x, y): return x + y def sub(x,y): return x - y class UnittestDemo(unittest.TestCase): def setUp(self): print("I an setup") def test_add(self): print("my first unit test demo----add") self.assertEqual(add(10,1),11,"assert equal") def test_sub(self): print("my first unit test demo----sub") self.assertEqual(sub(10, 1), 9, "assert equal2") @unittest.skip("i don't want to run this case.") def test_sub1(self): print("my first unit test demo----sub1") self.assertEqual(sub(10, 1), 9, "assert equal3") def tearDown(self): print("I an tearDown")
setUp及TearDown
方法级别的,类里面的每个方法调用一次
def setUp(self): print("I an setup")
setUpClass及tearDownClass
类级别的,类里面的所有方法仅执行一次
@classmethod def setUpClass(cls): print("I an setUpClass")
setUpModule,tearDownModule
模块级别的,执行模块里面类中的所有方法仅执行一次
4.Unittest使用
import unittest from unittest_task import UnittestDemo from HTMLTestRunner import HTMLTestRunner suite=unittest.TestSuite()#创建用例集合 tests = [UnittestDemo("test_add"), UnittestDemo("test_sub"),UnittestDemo("test_sub1")] suite.addTests(tests) with open('HTMLReport.html', 'wb') as fi: runner = HTMLTestRunner(stream=fi, title = 'MathFunc Test Report', description='generated by HTMLTestRunner.', verbosity=2 ) runner.run(suite)
TestCase
多个测试用例集合在一起,就是TestSuite
TestSuite
多个测试用例集合在一起,就是TestSuite
TestLoader
用来加载TestCase到TestSuite中的
TestRunner
执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
skip装饰器
跳过某个用例不执行
@unittest.skip("i don't want to run this case.")
无条件跳过
unittest.skip(reason)
当condition为True时跳过
unittest.skipIf(condition, reason)
当condition为False时跳过
unittest.skipUnless(condition, reason)
self.skipTest('do not run this.')
5.Unittest生成报告
5.1 Unittest生成txt格式报告
if __name__ == '__main__': suite = unittest.TestSuite() tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")] suite.addTests(tests) with open('UnittestTextReport.txt', 'a') as f: runner = unittest.TextTestRunner(stream=f, verbosity=2) runner.run(suite)
运行该文件,就会发现目录下生成了'UnittestTextReport.txt,所有的执行报告均输出到了此文件中。
verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告
5.2 Unittest生成html格式报告
with open('HTMLReport.html', 'wb') as fi: runner = HTMLTestRunner(stream=fi, title = 'MathFunc Test Report', description='generated by HTMLTestRunner.', verbosity=2 ) runner.run(suite)
输出测试报告为HTML格式,unittest中htmltestrunner导出测试报告,可以修改htmltestrunner中的测试代码
其中,的python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决见:
https://www.jb51.net/article/168573.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
更新日志
- 孙悦.1996-伙伴【正大国际】【WAV+CUE】
- 纪钧瀚《钢琴阅读时光 雨中书店聆听轻音乐》[FLAC/分轨][399.62MB]
- 证声音乐图书馆《走向自然 疗心爵士乐》[320K/MP3][87.4MB]
- 证声音乐图书馆《走向自然 疗心爵士乐》[FLAC/分轨][184.94MB]
- 陈慧娴.2018-Priscilla-Ism演唱会3CD(2024环球红馆40复刻系列)【环球】【WAV+CUE】
- 郑秀文.1999-我应该得到(国)【华纳】【WAV+CUE】
- 陈家慧.2011-钢琴酒吧2CD【龙吟唱片】【WAV+CUE】
- 证声音乐图书馆《雨季 蓝调吉他 Rainy Blues》[320K/MP3][45.01MB]
- 证声音乐图书馆《雨季 蓝调吉他 Rainy Blues》[FLAC/分轨][109.13MB]
- 赞多《序章》[320K/MP3][45.54MB]
- 许巍.2004-每一刻都是崭新的【步升大风】【WAV+CUE】
- 群星.2024-四方馆影视原声带【韶愔音乐】【FLAC分轨】
- 陈雷.1997-安锁咧【金圆唱片】【WAV+CUE】
- 关淑怡.2013-MY.FAVORITE.SK.3CD【环球】【WAV+CUE】
- Sweety.2006-花言乔语【丰华】【WAV+CUE】