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

1.簡單地一個實例
# Test002_Fail.py
# -*- coding:utf-8 -*-
import unittest
class Test002_Fail(unittest.TestCase):
#測試用例前執(zhí)行
def setUp(self):
print 'Case Before'
pass
#測試用例后執(zhí)行
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
# SuiteDemo.py
# -*- coding:utf-8 -*-
#一個類,添加測試集
import unittest
class SuiteDemo(unittest.TestCase):
#測試用例前執(zhí)行
def setUp(self):
print 'Case Before'
pass
#測試用例后執(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'
#定義一個測試集合,方便添加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文件中,這樣方便區(qū)分case模塊和Suite管理模塊,在測試測試的時候只需要在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'
接下來為三個Suite模塊,都是先導入Case模塊,之后添加Suite,再在Suite里面添加Case,最后執(zhí)行的時候需要使用TestRunner,這個TestRunner 相當于Suite 的執(zhí)行器
簡單地TestSuite:
# 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的添加,之后執(zhí)行
# 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分組,用于區(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 運行'
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
#運行的時候,可以根據(jù)不同的要求,運行不同的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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
淺談在django中使用filter()(即對QuerySet操作)時踩的坑
這篇文章主要介紹了淺談在django中使用filter()(即對QuerySet操作)時踩的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python向Excel中插入圖片的簡單實現(xiàn)方法
這篇文章主要介紹了Python向Excel中插入圖片的簡單實現(xiàn)方法,結合實例形式分析了Python使用XlsxWriter模塊操作Excel單元格插入jpg格式圖片的相關操作技巧,非常簡單實用,需要的朋友可以參考下2018-04-04
對python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實例講解
今天小編就為大家分享一篇對python中基于tcp協(xié)議的通信(數(shù)據(jù)傳輸)實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07

