gpt4 book ai didi

Python Unittest自动化单元测试框架详解

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python Unittest自动化单元测试框架详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了Python Unittest自动化单元测试框架的具体代码,供大家参考,具体内容如下 。

1、python 测试框架(本文只涉及 PyUnit) 。

参考地址 。

2、环境准备 。

首先确定已经安装有Python,之后通过安装PyUnit,Python版本比较新的已经集成有PyUnit(PyUnit 提供了一个图形测试界面UnittestGUI.py) 参考:查看地址 。

3、代码实例 。

使用的IDE为 PyCharm,DEMO结构如图 。

Python Unittest自动化单元测试框架详解

1.简单地一个实例 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Test002_Fail.py
 
 
# -*- coding:utf-8 -*-
 
import unittest
 
class Test002_Fail(unittest.TestCase):
 
   #测试用例前执行
   def setUp( self ):
     print 'Case Before'
     pass
 
   #测试用例后执行
   def tearDown( self ):
     print 'Case After'
     pass
 
   #测试用例1
   def test_Case1( self ):
     a = 3
     b = 2
     self .assertEqual(a + b, 4 , 'Result Fail' )
 
   #测试用例2
   def test_Case2( self ):
     a = 2
     b = 3
     self .assertEqual(a * b, 7 , 'Result Fail' )
 
if __name__ = = '__main__' :
   unittest.main()

2.当case比较多的时候,可以使用Suite来管理多个case,suite 可以看做是一个case 的容器,可以装很多的case 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# SuiteDemo.py
# -*- coding:utf-8 -*-
#一个类,添加测试集
import unittest
 
class SuiteDemo(unittest.TestCase):
 
 
   #测试用例前执行
   def setUp( self ):
     print 'Case Before'
     pass
 
   #测试用例后执行
   def tearDown( self ):
     print 'Case After'
     pass
 
   def test_Case1( self ):
     a = 3
     b = 2
     self .assertEqual(a + b, 5 , 'Result Fail' )
     print 'Case1'
 
   def test_Case2( self ):
     a = 2
     b = 3
     self .assertEqual(a * b, 6 , 'Result Fail' )
     print 'Case2'
 
#定义一个测试集合,方便添加Case
 
def suite():
   suiteTest = unittest.TestSuite()
   suiteTest.addTest(SuiteDemo( "test_Case1" ))
   suiteTest.addTest(SuiteDemo( "test_Case2" ))
   return suiteTest
 
 
#默认运行时通过 Suite 运行
 
if __name__ = = '__main__' :
   unittest.main(defaultTest = 'suite' )

3.Suite 和 Case可以分开写在不同的Python文件中,这样方便区分case模块和Suite管理模块,在测试测试的时候只需要在case模块里面添加case,之后添加到Suite模块即可了 。

case模块 。

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# TestCaseDemo
 
# -*- coding:utf-8 -*-
 
 
import unittest
 
 
class TestCaseDemo(unittest.TestCase):
   def setUp( self ):
     pass
 
   def tearDown( self ):
     pass
 
   def test_Case1( self ):
     print 'test_Case1'
 
   def test_Case2( self ):
     print 'test_Case2'
 
   def test_Case3( self ):
     print 'test_Case3'
 
   def test_Case4( self ):
     print 'test_Case4'

接下来为三个Suite模块,都是先导入Case模块,之后添加Suite,再在Suite里面添加Case,最后执行的时候需要使用TestRunner,这个TestRunner 相当于Suite 的执行器 。

简单地TestSuite

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# TestCase_Demo1.py
 
# -*- coding:utf-8 -*-
 
#集合写入一个方法,main调用并启动
 
 
import unittest
from TestCase_Demo import TestCaseDemo
 
 
#添加一个测试集合,并添加Case
 
def suite():
   suiteTest = unittest.TestSuite()
   suiteTest.addTest(TestCaseDemo( 'test_Case1' ))
   return suiteTest
 
 
#指定并启动测试集合,运行集合方法
 
if __name__ = = '__main__' :
 
   runner = unittest.TextTestRunner()
   runner.run(suite())

也可以不定义Suite方法,直接在main方法中进行Case的添加,之后执行 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# TestCase_Demo2.py
 
# -*- coding:utf-8 -*-
 
#集合可以写在main
 
 
import unittest
from TestCase_Demo import TestCaseDemo
 
 
#指定并启动测试集合
 
if __name__ = = '__main__' :
 
   #添加测试集合Case,并启动
   suiteTest = unittest.TestSuite()
   suiteTest.addTest(TestCaseDemo( 'test_Case1' ))
   suiteTest.addTest(TestCaseDemo( 'test_Case2' ))
 
   #直接启动集合
   runner = unittest.TextTestRunner()
   runner.run(suiteTest)

可以把不同的Case 添加道不同的Suite里面,同样,可以给Suite分组,用于区分不同的Case,并且,Suite 之间还可以包含 。

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# TestCase_Demo3.py
# -*- coding:utf-8 -*-
 
#包含集合,多集合
 
import unittest
from TestCase_Demo import TestCaseDemo
 
#添加不同的合集
 
def Suite1():
   suiteTest = unittest.TestSuite()
   suiteTest.addTest(TestCaseDemo( "test_Case1" ))
   suiteTest.addTest(TestCaseDemo( "test_Case2" ))
   print 'Suite1 运行'
   return suiteTest
 
def Suite2():
   suiteTest = unittest.TestSuite()
   suiteTest.addTest(TestCaseDemo( "test_Case3" ))
   suiteTest.addTest(TestCaseDemo( "test_Case4" ))
   print 'Suite2 运行'
   return suiteTest
 
#包含所有的Suite
 
def AllSuite():
   allTest = unittest.TestSuite((Suite1(),Suite2()))
   return allTest
 
#运行的时候,可以根据不同的要求,运行不同的Suite,或者全部运行,这样就方便管理每次运行的case
 
if __name__ = = '__main__' :
   runner = unittest.TextTestRunner()
   runner.run(AllSuite())

4.小结 。

PyUnit 是Python的一个单元测试框架,使用它可以方便的管理自动化运行的case. 在Python 中,每一个方法 只要方法名使用test_ 开头的都被作为是一个用例,都可以看做成一个case,这里介绍了使用Suite管理Case,并且分组运行Case,还有其他很多的功能,请参考: unittest — Unit testing framework 。

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

原文链接:https://blog.csdn.net/a542551042/article/details/46696635 。

最后此篇关于Python Unittest自动化单元测试框架详解的文章就讲到这里了,如果你想了解更多关于Python Unittest自动化单元测试框架详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com