Python Unittest自動(dòng)化單元測(cè)試框架詳解
本文實(shí)例為大家分享了Python Unittest自動(dòng)化單元測(cè)試框架的具體代碼,供大家參考,具體內(nèi)容如下
1、python 測(cè)試框架(本文只涉及 PyUnit)
2、環(huán)境準(zhǔn)備
首先確定已經(jīng)安裝有Python,之后通過(guò)安裝PyUnit,Python版本比較新的已經(jīng)集成有PyUnit(PyUnit 提供了一個(gè)圖形測(cè)試界面UnittestGUI.py)
參考:查看地址
3、代碼實(shí)例
使用的IDE為 PyCharm,DEMO結(jié)構(gòu)如圖

1.簡(jiǎn)單地一個(gè)實(shí)例
# Test002_Fail.py
# -*- coding:utf-8 -*-
import unittest
class Test002_Fail(unittest.TestCase):
#測(cè)試用例前執(zhí)行
def setUp(self):
print 'Case Before'
pass
#測(cè)試用例后執(zhí)行
def tearDown(self):
print 'Case After'
pass
#測(cè)試用例1
def test_Case1(self):
a = 3
b = 2
self.assertEqual(a+b,4,'Result Fail')
#測(cè)試用例2
def test_Case2(self):
a = 2
b = 3
self.assertEqual(a*b,7,'Result Fail')
if __name__ == '__main__':
unittest.main()
2.當(dāng)case比較多的時(shí)候,可以使用Suite來(lái)管理多個(gè)case,suite 可以看做是一個(gè)case 的容器,可以裝很多的case
# SuiteDemo.py
# -*- coding:utf-8 -*-
#一個(gè)類(lèi),添加測(cè)試集
import unittest
class SuiteDemo(unittest.TestCase):
#測(cè)試用例前執(zhí)行
def setUp(self):
print 'Case Before'
pass
#測(cè)試用例后執(zhí)行
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'
#定義一個(gè)測(cè)試集合,方便添加Case
def suite():
suiteTest = unittest.TestSuite()
suiteTest.addTest(SuiteDemo("test_Case1"))
suiteTest.addTest(SuiteDemo("test_Case2"))
return suiteTest
#默認(rèn)運(yùn)行時(shí)通過(guò) Suite 運(yùn)行
if __name__ == '__main__':
unittest.main(defaultTest='suite')
3.Suite 和 Case可以分開(kāi)寫(xiě)在不同的Python文件中,這樣方便區(qū)分case模塊和Suite管理模塊,在測(cè)試測(cè)試的時(shí)候只需要在case模塊里面添加case,之后添加到Suite模塊即可了
case模塊
# 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'
接下來(lái)為三個(gè)Suite模塊,都是先導(dǎo)入Case模塊,之后添加Suite,再在Suite里面添加Case,最后執(zhí)行的時(shí)候需要使用TestRunner,這個(gè)TestRunner 相當(dāng)于Suite 的執(zhí)行器
簡(jiǎn)單地TestSuite:
# TestCase_Demo1.py
# -*- coding:utf-8 -*-
#集合寫(xiě)入一個(gè)方法,main調(diào)用并啟動(dòng)
import unittest
from TestCase_Demo import TestCaseDemo
#添加一個(gè)測(cè)試集合,并添加Case
def suite():
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo('test_Case1'))
return suiteTest
#指定并啟動(dòng)測(cè)試集合,運(yùn)行集合方法
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
也可以不定義Suite方法,直接在main方法中進(jìn)行Case的添加,之后執(zhí)行
# TestCase_Demo2.py
# -*- coding:utf-8 -*-
#集合可以寫(xiě)在main
import unittest
from TestCase_Demo import TestCaseDemo
#指定并啟動(dòng)測(cè)試集合
if __name__ == '__main__':
#添加測(cè)試集合Case,并啟動(dòng)
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo('test_Case1'))
suiteTest.addTest(TestCaseDemo('test_Case2'))
#直接啟動(dòng)集合
runner = unittest.TextTestRunner()
runner.run(suiteTest)
可以把不同的Case 添加道不同的Suite里面,同樣,可以給Suite分組,用于區(qū)分不同的Case,并且,Suite 之間還可以包含
# 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 運(yùn)行'
return suiteTest
def Suite2():
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestCaseDemo("test_Case3"))
suiteTest.addTest(TestCaseDemo("test_Case4"))
print 'Suite2 運(yùn)行'
return suiteTest
#包含所有的Suite
def AllSuite():
allTest = unittest.TestSuite((Suite1(),Suite2()))
return allTest
#運(yùn)行的時(shí)候,可以根據(jù)不同的要求,運(yùn)行不同的Suite,或者全部運(yùn)行,這樣就方便管理每次運(yùn)行的case
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(AllSuite())
4.小結(jié)
PyUnit 是Python的一個(gè)單元測(cè)試框架,使用它可以方便的管理自動(dòng)化運(yùn)行的case.
在Python 中,每一個(gè)方法 只要方法名使用test_ 開(kāi)頭的都被作為是一個(gè)用例,都可以看做成一個(gè)case,這里介紹了使用Suite管理Case,并且分組運(yùn)行Case,還有其他很多的功能,請(qǐng)參考:unittest — Unit testing framework
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python單元測(cè)試unittest實(shí)例詳解
- Python單元測(cè)試框架unittest使用方法講解
- Python中unittest用法實(shí)例
- Python unittest 簡(jiǎn)單實(shí)現(xiàn)參數(shù)化的方法
- Python中Unittest框架的具體使用
- Python unittest單元測(cè)試框架的使用
- Python Unittest根據(jù)不同測(cè)試環(huán)境跳過(guò)用例的方法
- python unittest實(shí)現(xiàn)api自動(dòng)化測(cè)試
- Python unittest快速入門(mén)使用指南
相關(guān)文章
淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑
這篇文章主要介紹了淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
通過(guò)實(shí)例了解python__slots__使用方法
這篇文章主要介紹了通過(guò)實(shí)例了解python__slots__使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python使用XlsxWriter模塊操作Excel單元格插入jpg格式圖片的相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2018-04-04
實(shí)例講解Python設(shè)計(jì)模式編程之工廠方法模式的使用
這篇文章主要介紹了Python設(shè)計(jì)模式編程之工廠方法模式的運(yùn)用實(shí)例,文中也對(duì)Factory Method模式中涉及到的角色作出了解析,需要的朋友可以參考下2016-03-03
JupyterLab遠(yuǎn)程密碼訪問(wèn)實(shí)現(xiàn)
本文主要介紹了JupyterLab遠(yuǎn)程密碼訪問(wèn)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
對(duì)python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實(shí)例講解
今天小編就為大家分享一篇對(duì)python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
python中對(duì)開(kāi)區(qū)間和閉區(qū)間的理解
這篇文章主要介紹了python中對(duì)開(kāi)區(qū)間和閉區(qū)間的理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
解決python flask中config配置管理的問(wèn)題
今天小編就為大家分享一篇解決python flask中config配置管理的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07

