Python中Unittest框架的具体使用

时间:2021-05-22

Unittest

1.环境

Unittest为Python内嵌的测试框架,不需要特殊配置,仅需要在File---settings---Tools----Python Intergrated Tools下配置框架为Unittest

2.编写规范

  • 需要导入 import unittest
  • 测试类必须继承unittest.TestCase
  • 测试方法以 test_开头
  • 模块和类名没有要求

3.Unittest介绍

import unittestdef add(x, y): return x + ydef sub(x,y): return x - yclass 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 unittestfrom unittest_task import UnittestDemofrom HTMLTestRunner import HTMLTestRunnersuite=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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章