unittest框架

unittest框架

1、写用例:TestCase 类
2、加载用例:TestSuite 类    TestLoader 类
3、对比结果(执行结果/期望结果):assert函数
4、执行并出结果:TextTestRunner 类
5、报告:HtmlTestReport 类

1)首先建一个math_method.py文件,用来存在被测试函数

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
View Code

2)新建一个unittest_case1.py文件,用来存放测试用例代码

 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()
View Code

3)新建一个unittest_suite1.py文件,用来存放加载用例,执行用例,生成报告的代码

 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)
View Code

备注:

执行结果,如果鼠标放在某一个测试用例函数后面则只执行这个用例;若放在最后一行测试用例的下面则执行所有测试用例
执行结果顺序按照函数名ASCII码排序0-9,A-Z, a-z,test_add_two_negative test_add_two_positive test_add_two_zero
使用main函数则也是执行整个所有用例

原文地址:https://www.cnblogs.com/lctest/p/12123646.html