unittest用例编写

1、第一步:创建python用例文件

2、第二步:创建用例类

3、第三步:写测试用例

import unittest

class TestDemo(unittest.TestCase):
    """定义测试类"""
    def test_01_login(self):
        print("这是一条测试登录的用例")

    def test_02_register(self):
        print("这是一条注册的测试用例")

 

unittest用例编写----用例前置和后置

1、setUp -----测试用例级别的前置方法,每执行一条测试用例时,首先要执行的方法

2、TearDown----测试用例级别的后置方法,每执行完一条测试用例时,要执行的方法

3、setUpClass----测试用例类的前置方法,在执行测试用例时,首先要执行的内容(整个测试类中,此方法只执行一次)

4、TearDownClass----测试用例类的后置方法,测试用例执行完后,再执行的内容(整个测试类中,此方法只执行一次)

 1 import unittest
 2 
 3 class TestDemo2(unittest.TestCase):
 4     def test_01(self):
 5         print("这是测试登录的用例")
 6 
 7     def test_02(self):
 8         print("这是测试注册的用例")
 9 
10     def setUp(self):
11         print("用例执行的前置方法---setUp--")
12 
13     def tearDown(self):
14         print("用例执行的后置方法---tearDown----")
 1 import unittest
 2 
 3 class TestDemo3(unittest.TestCase):
 4     def test_01(self):
 5         print("这是测试登录的用例")
 6 
 7     def test_02(self):
 8         print("这是测试注册的用例")
 9 
10     @classmethod   #可以查看setUpClass原码,此方法是属于类方法
11     def setUpClass(cls):
12         print("这是测试类级别的前置方法")
13 
14     @classmethod
15     def tearDownClass(cls):
16         print("这是测试类级别的后置方法")

unittest用例收集---TestSuite

1、测试套件

2、用例加载器

3、加载用例的方法 

 1 import unittest
 2 from demo1.test01 import test_01
 3 from demo1 import test01
 4 #创建一个测试套件
 5 suite = unittest.TestSuite()
 6 
 7 
 8 #创建一个用例加载器
 9 loader = unittest.TestLoader()
10 
11 #将用例加载到测试套件中
12 #方式一、通过类名来加载测试用例
13 suite.addTest(loader.loadTestsFromTestCase(test_01))
14 
15 #方式二、通过模块名来加载测试用例
16 suite.addTest(loader.loadTestsFromModule(test01))
17 
18 
19 #方式三、通过用例所在的文件路径进行加载用例,默认查找以test开头的py文件
20 #可以修改匹配规则进行加载用例pattern="test*.py"
21 suite.addTest(loader.discover(用例所在的文件夹路径,pattern="test*.py"))
22 
23 
24 #获取套件中用例的数量
25 print("套件中的用例数量",suite.countTestCases())

unittest用例运行---TestRunner

1、unittest的运行方式

2、TestTestRunner

 1 import unittest
 2 from demo1.test01 import test_01
 3 from demo1 import test01
 4 #创建一个测试套件
 5 suite = unittest.TestSuite()
 6  
 7  
 8 #创建一个用例加载器
 9 loader = unittest.TestLoader()
10  
11 #将用例加载到测试套件中
12 #方式一、通过类名来加载测试用例
13 suite.addTest(loader.loadTestsFromTestCase(test_01))
14  
15 
16 #用例运行
17 #runner = unittest.TextTestRunner()
18 #runer.run(suite)
19 
20 #如何想把测试结果写入到文本文件中
21 #stream参数:指要写入文件的路径
22 #verbosity参数:用例执行情况的详细程度,只有0~2,2是最详细
23 with open("result.txt","w",encoding="utf-8") as f:
24     runner = unittest.TextTestRunner(stream=f,verbosity=2)
25     runner.run(suite)

 

 

 

 

unittest用例加载&运行扩展

unittest中自带有默认的加载器

 1 import unittest
 2 from demo1.test01 import test_01
 3 from demo1 import test01
 4 
 5 
 6 #使用unittest默认的加载器时,就不需要自己手动创建加载器了
 7 
 8 #加载测试用例到测试套件中
 9 suite=unittest.defaultTestLoader.discover(用例所在文件夹的路径)
10 
11 with open("result.txt","w",encoding="utf-8") as f:
12     runner = unittest.TextTestRunner(stream=f,verbosity=2)
13     runner.run(suite)

生成HTML测试报告的方式

from BeautifulReport import BeautifulReport  #需要自行安装此库

#1、加载测试用例到测试套件中
suite = unittest.defaultTestLoaser.discover("用例所在文件夹的路径")

#运行测试用例

runner = BeautifulReport(suites=suite)
runner.report(description="用例名称")

python官方文档,可以借助查看原码 https://docs.python.org/zh-cn/3/

from unittestreport import TestRunner
import unittest

#第一步、收集测试用例
suite = unittest.defaultTestLoader.discover("用例所在的文件夹的路径")

#第二步、运行测试用例
#TestRunner()中可以修改相应的参数,进行定制化,templates参数:选择报告的模板,
#目前只有3个模板,1~3 runner = TestRunner(suite) runner.run()

 

unittestreport 之DataDrivenTest

import unittest
from unittestreport import ddt,list_data

"""
判断10组数据是否相等
11 22
11 44
22 33
44 55
66 33
"""

test_case=[(11,22),(22,33),(33,33),(33,44),(33,44)]

@ddt
class TestDemo(unittest.TestCase):

    @list_data(test_case)
    def test_01(self,case):
        a , b = case
        self.assertEqual(a,b)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

上一篇:Performance Optimization (2)


下一篇:2、Python接口自动化系列之unittest结合ddt的使用