校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Python接口自動化淺析unittest單元測試原理

Python接口自動化淺析unittest單元測試原理

熱門標簽:地圖標注審核表 百度地圖標注沒有了 長沙高頻外呼系統原理是什么 ai電話機器人哪里好 西藏房產智能外呼系統要多少錢 外呼并發線路 ai電銷機器人源碼 湛江智能外呼系統廠家 宿遷星美防封電銷卡

在上一篇Python接口自動化測試系列文章:Python接口自動化淺析requests請求封裝原理,主要通過源碼分析,總結出一套簡潔的請求類封裝。

以下主要介紹unittest特性、運行流程及實際案例。

一、單元測試三連問

1、什么是單元測試?

按照階段來分,一般就是單元測試,集成測試,系統測試,驗收測試。

單元測試是對單個模塊、單個類或者單個函數進行測試。

將訪問接口的過程封裝在函數里面;

接口測試就變成了單元測試;

單元測試就是通過傳參,對某個模塊、某個類、某個函數進行結果輸出后驗證的測試。

2、為什么要做單元測試?

1.單元測試之后,才是集成測試,單個的功能模塊測試通過之后,才能把單個功能模塊集成起來做集成測試,為了從底層發現bug,減少合成后出現的問題。

2.越早發現bug越好,否則問題累計到后期,如果做錯了就要推倒重來,對于時間和人力成本來說非常耗費精力。

對于我們測試來說:單元測試是為了執行測試用例。

3、怎么做單元測試?

Python里有兩個單元測試類:

1.Unittest(Python自帶);

2.Pytest(下載安裝);

前者多用于接口自動化項目用,后者多用于WEB自動化項目、APP自動化項目。

二、unittest模塊說明

1、unittest簡介

unittest是Python自帶的單元測試框,具備編寫用例、組織用例、執行用例、輸出報告等自動化框架的條件,可以用來作自動化測試框架的用例組織執行框架。

unittest框架的特性:

  • 提供用例組織與執行:當測試用例只有幾條的時候可以不考慮用例的組織,但是當測試用例數量較多時,此時就需要考慮用例的規范與組織問題。unittest單元測試框架就是用來解決這個問題的。
  • 提供豐富的斷言方法:既然是測試,就有一個預期結果和實際結果的比較問題。比較就是通過斷言來實現,unittest單元測試框架提供了豐富的斷言方法,通過捕獲返回值,并且與預期值進行比較,從而得出測試通過與否。
  • 提供豐富的日志:每一個失敗用例我們都希望知道失敗的原因,所有用例執行結束我們有希望知道整體執行情況,比如總體執行時間,失敗用例數,成功用例數。unittest單元測試框架為我們提供了這些數據。

2、unittest組成

unittest單元測試中最核心的四個部分是:

TestCase(測試用例)

TestSuite(測試套件)

TestRunner(測試運行器)

TestFixture(測試環境數據準備和清理)

1.TestCase(測試用例):

一個TestCase的實例就是一個測試用例。什么是測試用例呢?就是一個完整的測試流程。包括測試前準備環境的搭建(setUp)、實現測試過程的代碼(run),以及測試后環境的還原(tearDown)。

單元測試(Unittest)的本質也就在這里,一個測試用例就是一個完整的測試單元,通過運行這個測試單元,可以對某一個功能進行驗證。

2.TestSuite(測試套件):

一個功能的驗證往往需要多個測試用例,可以把多個測試用例集合在一起執行,這就產生了測試套件TestSuite的概念。TestSuite用來組裝單個測試用例??梢酝ㄟ^addTest加載TestCase到TestSuite中,從而返回一個TestSuite實例。

而且TestSuite也可以嵌套TestSuite。

3.TestLoader(測試用例加載器):

用來加載TestCase到TestSuite中的,其中loadTestsFrom__()方法用于尋找TestCase,并創建它們的實例,然后添加到TestSuite中,返回TestSuite實例;

4.TextTestRunner(執行測試用例):

用來執行測試用例,其中run(test)會執行TestSuite/TestCase中的run(result)方法,并將測試結果保存到TextTestResult實例中,包括運行了多少測試用例,成功多少,失敗多少等信息;

5.Test Fixture(測試環境數據準備和清理):

一個測試用例的初始化準備及環境還原,主要是setUp() 和 tearDown()方法;

比如說在測試用例中需要訪問數據庫,那么可以在setUp()中建立數據庫連接以及進行一些初始化,

在tearDown()中清除在數據庫中產生的數據,然后關閉連接。

注意tearDown的過程很重要,要為以后的TestCase留下一個干凈的環境。

3、unittest核心工作原理

unittest的靜態類圖:

大體流程:編寫TestCase,由TestLoader加載TestCase到TestSuite,然后由TextTestRunner來運行TestSuite,最后將運行的結果保存在TextTestResult中。

三、unittest單元測試

1、實現思路

1.導入unittest模塊、 被測文件或者其中的類;

2.創建一個測試類,并繼承unittest.TestCase方法;

3.重寫setUp和tearDown方法(如果有初始化條件和結束條件)。若setup()成功運行,無論測試方法是否成功,都會運行tearDown ();

4.定義測試函數,函數名以test_開頭,以識別測試用例;

5.調用unittest.main()方法運行測試用例;

6.用例執行后,需要判斷用例是Pass還是Fail,可以用unittest.TestCase模塊的:斷言

斷言就是比對預期結果。如果不加斷言,沒有結果對比,需要手動去檢查運行的結果是否符合預期。

2、使用介紹

1.要想使用unittest單元測試框架,必須得先導入:import unittest

2.查看unittest源碼;

import unittest
print(help(unittest))

從打印結果中提取出unittest簡易的例子:

import unittest
class IntegerArithmeticTestCase(unittest.TestCase):
    def testAdd(self):  # test method names begin with 'test'
        self.assertEqual((1 + 2), 3)
        self.assertEqual(0 + 1, 1)
    def testMultiply(self):
        self.assertEqual((0 * 10), 0)
        self.assertEqual((5 * 8), 40)
if __name__ == '__main__':
    unittest.main()

四、unittest實例

1、TestCase(測試用例)

看了官方代碼后,我們自己寫個例子熟悉下,并總結出規律:

import unittest
class TestDemo(unittest.TestCase):
    # test_sub用例
    def test_sub(self):
        self.assertEqual(2-1,1)
    # test_add用例
    def test_add(self):
        self.assertEqual(2+1,3)
if __name__ == "__main__":
    # unittest.main()是運行主函數
    unittest.main(verbosity=2)

運行結果為:

test_add (__main__.TestDemo) ... ok
test_sub (__main__.TestDemo) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK

接下來,我們來總結一些規律:

  • 使用unittest前,需導入unittest框架。
  • TestDemo這個類必須繼承unittest.TestCase,TestCase類,所有測試用例類繼承的基類。
  • 類內的方法必須以test開頭,比如test_add。
  • 斷言:assertEqual用來斷言預期結果和實際結果是否一致。當然unittest還包含很多其他斷言方法,后面統一介紹。
  • 用例執行順序。在代碼中test_sub方法寫在test_add前,但實際,test_add比test_sub先運行。為什么呢?unittest執行測試用例,默認是根據ASCII碼的順序加載測試用例,數字與字母的順序為:0-9,A-Z,a-z。
  • verbosity是一個選項,表示測試結果的信息復雜度,有0、1、2 三個值。verbosity=0 : 你只能獲得測試用例數總的結果;verbosity=1 (默認模式): 在每個成功的用例前面有個“.” 每個失敗的用例前面有個 “F”;verbosity=2 (詳細模式):測試結果會顯示每個測試用例的所有相關的信息。

如下,在測試用例中寫入斷言:

import unittest
#測試MathMethod類
class TestMathMethod(unittest.TestCase):
    #編寫測試用例
    def test_add_two_positive(self): #測試兩個正數相加
        res=MathMethod(1,1).add()
        print("1+1的結果是:",res)
        self.assertEqual(2,res,"兩個正數相加出錯!") #斷言
    def test_add_two_zero(self): #測試兩個0相加
        res = MathMethod(0, 0).add()
        print("0+0的結果是:", res)
        self.assertEqual(0, res, "兩個0相加出錯!") #斷言
    def test_add_two_negative(self): #測試兩個負數相加
        res = MathMethod(-1, -1).add()
        print("-1+(-1)的結果是:", res)
        self.assertEqual(-2, res, "兩個負數相加出錯!") #斷言
if __name__ == '__main__':
    unittest.main()

測試用例里面的setUp函數與tearDown函數的使用:

class TestMathMethod(unittest.TestCase):
def setUp(self):
    print("開始準備執行測試用例!")
    
def tearDown(self):
    print("結束!")
    
#編寫測試用例
def test_add_two_positive(self): #測試兩個正數相加
    res=MathMethod(1,1).add()
    print("1+1的結果是:",res)

setUp函數:初始化環境(執行每條用例之前,都要執行setUp函數下面的代碼,每次都要執行);

tearDown函數:清洗環境(執行每條用例之后,都要執行tearDown函數下面的代碼,每次都要執行);

setUp()、tearDown()是TestCase里的方法,寫在測試類中,就是方法的重寫。

執行順序是:setUp->testA->tearDown->setUp->testB>tearDown

2、TestSuit(測試集)

當測試用例全部寫完,但是只想執行其中部分,可以使用TestSuit()來收集測試用例。

import unittest
from xxx import xxx      #測試用例的類
suite=unittest.TestSuit()
suite.addTest(測試用例的類("用例名稱1"))    #用例名稱用字符串的形式傳入
suite.addTest(測試用例的類("用例名稱2"))
suite.addTest(測試用例的類("用例名稱3"))
.....

3、TestLoader(加載測試用例)

方式一:通過測試類來加載用例(loadTestsFromTestCase)

一次性加載測試用例類名1下的所有用例。

import unittest
    from xxx import xxx      #測試用例的類
    suite=unittest.TestSuit()
    loader=unittest.TestLoader()
    suite.addTest(loader.loadTestsFromTestCase(測試用例類名1))  
    #測試用例類名直接傳入
 

方式二:通過測試類所在的模塊加載用例(loadTestsFromModule)

一次性加載測試用例模塊名下的所有用例。

import unittest
from xxx import xxx      #測試用例模塊
suite=unittest.TestSuit()
loader=unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(測試用例模塊名))   #測試用例模塊名直接傳入

4、生成測試報告

方式一:使用unittest自帶的TextTestRunner生成測試報告(文本格式,不推薦使用)。

 

TextTestRunner是一個以文本形式展示測試結果的測試運行程序類

stream 輸出報告的路徑,默認輸出控制臺;

verbosity 控制輸出報告的詳細程度,從0-2,越來越詳細;

方式二:使用第三方模塊HTMLTestRunnerNew(生成HTML格式的測試報告,推薦使用)。

file:文件

verbosity:詳細程度

title:標題

description:描述

tester:作者

with open("接口測試報告.html","wb") as file:
    runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file,  
                                              verbosity=2,
                                              title="接口自動化測試報告",
                                              description="接口測試V1",
                                              tester="ITester軟件測試小棧")
    runner.run(suite)

方式三:使用unittest.defaultTestLoader.discover() 模糊匹配。

import unittest
import HTMLTestRunnerNew
all_testcases=unittest.defaultTestLoader.discover(contants.testcases_dir, pattern='test_*.py',top_level_dir=None) 
#利用上下文管理器自動關閉資源
with open(contants.reports_html,"wb+") as file:    #選擇絕對路徑,把文件打開,寫進內容 (報告的文件名直接寫在路徑里面)
    runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file,
                                            title="接口自動化測試報告",
                                            description="接口測試V1",
                                            tester="ITester軟件測試小棧")
    runner.run(all_testcases)
 

到此這篇關于Python接口自動化淺析unittest單元測試原理的文章就介紹到這了,更多相關Python接口自動化unittest單元測試內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python基礎之元編程知識總結
  • Python中用Decorator來簡化元編程的教程
  • Python中使用裝飾器和元編程實現結構體類實例
  • 簡析Python函數式編程字符串和元組及函數分類與高階函數
  • python使用xpath獲取頁面元素的使用
  • 如何利用Python批量處理行、列和單元格詳解
  • Python元類與迭代器生成器案例詳解
  • Python BeautifulSoup基本用法詳解(通過標簽及class定位元素)
  • python中使用 unittest.TestCase單元測試的用例詳解
  • python自動化八大定位元素講解
  • python一繪制元二次方程曲線的實例分析
  • 詳解Python自動化中這八大元素定位
  • python元組打包和解包過程詳解
  • 淺談Python的元編程

標簽:漯河 南平 盤錦 寧夏 普洱 海南 林芝 大同

巨人網絡通訊聲明:本文標題《Python接口自動化淺析unittest單元測試原理》,本文關鍵詞  Python,接口,自動化,淺析,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python接口自動化淺析unittest單元測試原理》相關的同類信息!
  • 本頁收集關于Python接口自動化淺析unittest單元測試原理的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91麻豆精品国产91久久久久久 | 国产成人精品亚洲777人妖| 九色|91porny| 国产精品1024| 欧美影视一区在线| 欧美成人性福生活免费看| 亚洲摸摸操操av| 亚州成人在线电影| 国产老女人精品毛片久久| 99国产精品久久久久久久久久久| 在线欧美一区二区| 久久综合九色综合欧美就去吻| 中文字幕不卡在线播放| 亚洲成人在线观看视频| 国产激情一区二区三区四区| 在线观看精品一区| 国产日韩影视精品| 五月激情丁香一区二区三区| 国产91色综合久久免费分享| 欧美丰满美乳xxx高潮www| 国产欧美视频一区二区三区| 日日夜夜精品视频天天综合网| 国产成人av自拍| 久久这里只有精品首页| 五月婷婷激情综合| 色综合欧美在线视频区| 国产精品免费久久| 欧美日韩一区二区三区四区| 久久精品一区二区三区不卡牛牛 | 在线这里只有精品| 国产精品青草综合久久久久99| 国产呦精品一区二区三区网站| 日韩欧美久久久| 久久99日本精品| 26uuu另类欧美| 国产福利精品一区| 中文字幕亚洲在| av一区二区三区黑人| 国产精品成人网| 欧美日韩精品一区二区三区| 亚洲不卡一区二区三区| 欧美人与z0zoxxxx视频| 麻豆精品在线观看| 久久精品人人做人人爽97| 成人黄色在线看| 亚洲日本在线天堂| 欧美视频自拍偷拍| 免费在线观看视频一区| 2020国产精品| 91天堂素人约啪| 免费成人在线网站| 国产精品国产成人国产三级| 欧美日韩免费一区二区三区| 97se亚洲国产综合自在线不卡| 亚洲一区二区三区小说| 欧美成人一区二区| 欧美中文字幕一二三区视频| 免费成人av在线播放| 自拍偷拍国产亚洲| 精品国产91久久久久久久妲己| 色婷婷精品大在线视频| 蜜桃av一区二区在线观看 | 精品一区二区三区香蕉蜜桃| 亚洲男人的天堂在线观看| 久久久综合激的五月天| 56国语精品自产拍在线观看| 北条麻妃国产九九精品视频| 蜜臀av性久久久久蜜臀aⅴ | 色天天综合色天天久久| 免费高清视频精品| 亚洲电影一级片| 亚洲午夜影视影院在线观看| 国产精品美女久久久久av爽李琼| 中文字幕在线视频一区| 久久久久一区二区三区四区| 欧美一区二区精美| 欧美一卡2卡三卡4卡5免费| 欧美色图片你懂的| 欧美高清视频不卡网| 欧美美女直播网站| 欧美一级生活片| 欧美va亚洲va在线观看蝴蝶网| 欧美成人精品二区三区99精品| 欧美人xxxx| 日韩一级免费一区| 久久精品夜夜夜夜久久| 国产精品天天摸av网| 日韩美女精品在线| 亚洲成人激情av| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲午夜一区二区| 亚洲午夜精品网| 国产激情精品久久久第一区二区| 懂色av中文字幕一区二区三区| av一区二区三区在线| 制服丝袜亚洲网站| 久久夜色精品国产欧美乱极品| 国产精品美女久久久久久久久| 亚洲国产精品久久人人爱蜜臀| 精东粉嫩av免费一区二区三区| 99精品偷自拍| 欧美精品一区二区久久婷婷| 亚洲激情自拍视频| 久久激情五月婷婷| 欧洲一区二区三区在线| 精品国内二区三区| 午夜精品久久久| 91亚洲资源网| 久久久久久久久久久99999| 一区二区三区欧美久久| 国产乱人伦偷精品视频免下载| 欧美亚洲高清一区| 最新国产の精品合集bt伙计| 久久99精品久久久| 欧美色大人视频| 亚洲综合一区二区| 91麻豆免费在线观看| 欧美韩国日本综合| 东方aⅴ免费观看久久av| 日韩一卡二卡三卡| 成人高清免费观看| 日韩欧美一二三| 蜜桃久久久久久久| 精品国产乱码久久久久久老虎| 裸体一区二区三区| 欧美成人aa大片| 免费人成精品欧美精品| 欧美v日韩v国产v| 国产精品一区二区男女羞羞无遮挡| 国产日本亚洲高清| 成人激情电影免费在线观看| 国产精品亲子乱子伦xxxx裸| 在线精品观看国产| 精品亚洲免费视频| 国产精品剧情在线亚洲| 99国产欧美另类久久久精品 | 风间由美一区二区三区在线观看 | 久久女同精品一区二区| av高清久久久| 老司机午夜精品| 中文字幕巨乱亚洲| 欧美日本韩国一区| 极品瑜伽女神91| 亚洲人成亚洲人成在线观看图片| 欧美猛男超大videosgay| 国产一区二区在线电影| 亚洲色图欧美偷拍| 日韩欧美国产高清| 色94色欧美sute亚洲线路一久| 日本aⅴ免费视频一区二区三区| 国产精品乱子久久久久| 在线成人免费视频| a4yy欧美一区二区三区| 另类小说色综合网站| 亚洲国产成人av网| 专区另类欧美日韩| 精品成人在线观看| 这里只有精品免费| 欧美亚州韩日在线看免费版国语版| 成人性视频网站| 黄色日韩网站视频| 日韩电影免费一区| 亚洲二区在线观看| 亚洲猫色日本管| 中文字幕精品三区| 91精品国产综合久久精品麻豆| 成人影视亚洲图片在线| 激情偷乱视频一区二区三区| 日本不卡一区二区三区| 午夜婷婷国产麻豆精品| 午夜精品福利在线| 亚洲一区中文在线| 亚洲在线免费播放| 亚洲成人黄色影院| 久久精品噜噜噜成人av农村| 日本sm残虐另类| 国产一区二区三区电影在线观看| 国产精品一区在线| 成人激情电影免费在线观看| 91美女视频网站| 51午夜精品国产| 国产亚洲自拍一区| 综合久久久久久| 亚洲一级二级三级| 麻豆国产欧美日韩综合精品二区| 国内不卡的二区三区中文字幕| 国产福利一区二区三区视频 | 一区在线中文字幕| 午夜影院久久久| 国产精品综合视频| 欧美天堂一区二区三区| 欧美成人r级一区二区三区| 亚洲欧洲日韩av| 久久99国产精品成人| 91免费版在线| 久久综合国产精品| 日本aⅴ亚洲精品中文乱码| 成人av免费在线观看| 亚洲精品一区二区精华| 夜夜嗨av一区二区三区四季av|