unittest框架
1、写用例:TestCase 类
2、加载用例:TestSuite 类 TestLoader 类
3、对比结果(执行结果/期望结果):assert函数
4、执行并出结果:TextTestRunner 类
5、报告:HtmlTestReport 类
1)首先建一个math_method.py文件,用来存在被测试函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 被测类函数 2 class MathMethod(): 3 4 def add(self, a, b): 5 return a + b 6 7 def sub(self, a, b): 8 return a - b
2)新建一个unittest_case1.py文件,用来存放测试用例代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # from unittest.case import TestCase #在文件unittest文件下面case文件中存在TestCase模块 2 # class TestAdd(TestCase): 3 4 import unittest 5 from test_unittest.math_method import MathMethod # 导入被测试类 6 7 8 class TestAdd(unittest.TestCase): # 测试类 专门测试加法类 9 # 写用例 每一条用例都是一个类函数 10 # 用例 def test_后缀(self) :用例函数必须test开头 11 12 def setUp(self): # 测试环境的搭建 13 print("我要开始测试咯") 14 self.t = MathMethod() 15 16 def tearDown(self): # 测试环境的销毁 17 print("我测试完成咯") 18 19 def test_add_two_zero(self): # 测试两个零相加的用例 20 # t = MathMethod() # 创建实例 21 # res = t.add(0, 0) 22 23 res = self.t.add(0, 0) 24 # 断言函数的调用,注意:为啥用self,因为调用父类的方法 25 self.assertEqual(1, res) 26 print("测试的结果是:{0}".format(res)) 27 28 def test_add_two_positive(self): # 测试两个整数相加的用例 29 # t = MathMethod() # 创建实例 30 # res = t.add(4, 5) 31 32 res = self.t.add(4, 5) 33 print("测试的结果是:{0}".format(res)) 34 35 def test_add_two_negative(self): # 测试两个负数相加的用例 36 # t = MathMethod() # 创建实例 37 # res = t.add(-4, -5) 38 39 res = self.t.add(-4, -5) 40 print("测试的结果是:{0}".format(res)) 41 42 43 class TestSub(unittest.TestCase): # 测试类 专门测试减法 44 # 写用例 每一条用例都是一个类函数 45 # 用例 def test_后缀(self) :用例函数必须test开头 46 47 def test_sub_two_zero(self): # 测试两个零相减的用例 48 t = MathMethod() # 创建实例 49 res = t.sub(0, 0) 50 print("测试的结果是:{0}".format(res)) 51 52 def test_sub_two_positive(self): # 测试两个整数相减的用例 53 t = MathMethod() # 创建实例 54 res = t.sub(4, 5) 55 print("测试的结果是:{0}".format(res)) 56 57 def test_sub_two_negative(self): # 测试两个负数相减的用例 58 t = MathMethod() # 创建实例 59 res = t.sub(-4, -5) 60 print("测试的结果是:{0}".format(res)) 61 62 63 if __name__ == '__main__': 64 unittest.main()
3)新建一个unittest_suite1.py文件,用来存放加载用例,执行用例,生成报告的代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import unittest 2 from project.unittest_case1 import AddTest # 导入测试加法类 3 from project.unittest_case1 import SubTest # 导入测试减法类 4 from project import unittest_case1 #导入模块 5 from HTMLTestRunnerNew import HTMLTestRunner 6 7 #--------------------------加载测试用例并执行,最后生成测试报告(txt/html格式)----------------------------- 8 9 ########### 创建实例######### 10 suite = unittest.TestSuite() 11 12 ##########加载测试用例########## 13 # 方法一:TestSuite加载测试用例【以实例形式】 14 suite.addTest(AddTest("test1_1")) 15 suite.addTest(AddTest("test1_2")) 16 suite.addTest(AddTest("test1_3")) 17 suite.addTest(AddTest("test1_4")) 18 suite.addTest(AddTest("test1_5")) 19 suite.addTest(AddTest("test1_6")) 20 21 suite.addTest(SubTest("test2_1")) 22 23 24 # # 方法二:使用TestLoader加载测试用例【以函数、模块形式】 25 # loader = unittest.TestLoader() 26 # suite.addTest(loader.loadTestsFromModule(unittest_case1)) 27 # suite.addTest(loader.loadTestsFromTestCase(SubTest)) 28 # suite.addTest(loader.loadTestsFromTestCase(AddTest)) 29 30 31 # -----------------------------------TextTestRunner执行测试用例,并生成报告(txt)------------------------------------------- 32 # with open("test_resul.txt", 'w+',encoding="utf-8") as file: 33 # runner = unittest.TextTestRunner(stream=file, 34 # descriptions='接口测试报告', 35 # verbosity=2) 36 # runner.run(suite) 37 38 # -----------------------------------TextTestRunner执行测试用例,并生成报告(txt)------------------------------------------- 39 with open("test_resul.html", 'wb+') as file: 40 runner = HTMLTestRunner(stream=file, 41 verbosity=2, 42 title='接口测试报告', 43 description=None, 44 tester='稳稳的幸福') 45 runner.run(suite)
备注:
执行结果,如果鼠标放在某一个测试用例函数后面则只执行这个用例;若放在最后一行测试用例的下面则执行所有测试用例
执行结果顺序按照函数名ASCII码排序0-9,A-Z, a-z,test_add_two_negative test_add_two_positive test_add_two_zero
使用main函数则也是执行整个所有用例