1. 程式人生 > >python unittest自動化測試框架總結

python unittest自動化測試框架總結

一、unittest工作原理

unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture

TestCase:使用者自定義的測試case的基類,呼叫run()方法,會依次呼叫setUp方法、執行用例的方法、tearDown方法。

TestSuite:測試用例集合,可以通過addTest()方法手動增加Test Case,也可以通過TestLoader自動新增Test Case,TestLoader在新增用例時,會沒有順序。

TestRunner:執行測試用例的驅動類,可以執行TestCase,也可以執行TestSuite,執行後TestCase和TestSuite會自動管理TESTResult。

TestFixture:簡單來說就是做一些測試過程中需要準備的東西,比如建立臨時的資料庫,檔案和目錄等,其中setUp()和setDown()是最常用的方法

整個的流程就是首先要寫好TestCase,然後由TestLoader載入TestCase到TestSuite,然後由TestTestRunner來執行TestSuite,執行的結果儲存在TextTestReusult中,整個過程整合在unittest.main模組中。

二、例子如下:

建立一個函式集mathfunc.pyc

def add(a,b):
    return a+b

def minus(a, b):
    return a-b

def multi(a, b):
    return a*b

def divide(a, b):
    return a/b

接下來是為這些方法寫的一個測試:

test_mathfunc.py

# -*- coding: utf-8 -*-

import unittest
from mathfunc import *

class TestMathFunc(unittest.TestCase):

    def setUp(self):
        print "do something befor test.prepare environment"

    def tearDown(self):
        print "do something after test.Clean up"

    def test_add(self):
        self.assertEqual(3,add(1,2))
        self.assertNotEqual(3,add(2,2))

    @unittest.skip("i don't want to run this case")
    def test_minus(self):
        self.assertEqual(1,minus(3,2))

    def test_multi(self):
        self.assertEqual(6,multi(2,3))

    def test_divide(self):
        self.assertEqual(2,divide(6,3))
        self.assertEqual(2.5,divide(5,2))

if __name__ == '__main__':
    unittest.main()

執行結果如下:

組織TestSuite

上面的程式碼演示瞭如何編寫一個簡單的測試,下面說一下怎麼控制用例執行的順序。我們就要用到TestCase,新增到TestCaseDE中的case是會按照新增的順序執行的。

來個例子:

在資料夾中再新建一個檔案。test_suite.py

# -*- coding: utf-8 -*-

import unittest
from test_mathfunc import TestMathFunc

if __name__ == '__main__':
    suite = unittest.TestSuite()

    tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]
    suite.addTests(tests)

    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

執行情況跟我們預料的一樣,執行了三個case,並且順序是按照我們新增進去suite的順序執行的。

將結果輸出到檔案中

修改test_suite.py

# -*- coding: UTF-8 -*-

import unittest
from test_mathfunc import TestMathFunc
from HTMLTestRunner import HTMLTestRunner

if __name__ == '__main__':
    suite = unittest.TestSuite()

    #使用這種方法可以對測試用例排序
    #tests = [TestMathFunc("test_add"), TestMathFunc("test_minus"), TestMathFunc("test_divide")]
    #suite.addTests(tests)
    
    #使用TestLoader的方法傳入TestCase
    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestMathFunc))

    #在同目錄下生成txt格式的測試報告
    #with open('UnittestTextReport.txt', 'a') as f:
        #runner = unittest.TextTestRunner(stream=f, verbosity=2)
        #runner.run(suite)

    with open('HTMLReport.html','w') as f:
        runner = HTMLTestRunner(stream = f,
                                title = u'測試報告',
                                description = u'測試用例的執行情況',
                                verbosity = 2
                                )
        runner.run(suite)

執行此檔案,可以看到,在同目錄下生成了一個TXT檔案;也可以把測試結果以html的格式輸出到頁面上。

執行結果如下:

在網頁中開啟測試報告:

小結:

1、unittest是python自帶的單元測試框架,可以用來作為我們自動化測試框架的用例組織執行框架

2、unittest流程:寫好TestCase,然後由TestLoader載入TestCase到TestSuite,然後由TextTestRunner來執行TestSuite,執行的結果儲存在TextTestResult中,我們通過命令列或者unittest.main()執行時,main會呼叫TextTestRunner中的run來執行,或者我們可以直接通過TextTestRunner來執行用例。

3、一個class繼承unittest.TestCase即是一個TestCase,其中以 test 開頭的方法在load時被載入為一個真正的TestCase。

4、verbosity引數可以控制執行結果的輸出,0 是簡單報告、1 是一般報告、2 是詳細報告。

5、可以通過addTest和addTests向suite中新增case或suite,可以用TestLoader的loadTestsFrom__()方法。

6、用 setUp()tearDown()setUpClass()以及 tearDownClass()可以在用例執行前佈置環境,以及在用例執行後清理環境

7、我們可以通過skip,skipIf,skipUnless裝飾器跳過某個case,或者用TestCase.skipTest方法。

8、引數中加stream,可以將報告輸出到檔案:可以用TextTestRunner輸出txt報告,以及可以用HTMLTestRunner輸出html報告。

相關推薦

python unittest自動化測試框架總結

一、unittest工作原理 unittest最核心的四部分是:TestCase,TestSuite,TestRunner,TestFixture TestCase:使用者自定義的測試case的基類,呼叫run()方法,會依次呼叫setUp方法、執行用例的方法、tearD

selenium-python-unittest自動化測試框架(資料和程式碼完全分離)

這套框架適合使用的場景: 1、測試資料不多 2、執行人員不需要會程式碼 3、看報告的時候要看執行詳細結果 工程分為以下幾部分: 1、公用方法包-Util 2、需要呼叫的固定變數包-ProjectVar 3、元素路徑目錄-Conf 4、頁面元素常用

python + selenium + unittest 自動化測試框架 -- 入門篇

、 預置條件: 1. python已安裝 2. pycharm已安裝 3. selenium已安裝 4. chrome.driver 驅動已下載     二、工程建立 1. New Project:建立自己的工程 2. New Package:建立各個配置包 3. Ne

Python中的單元測試模組Unittest快速入門 unittest單元測試框架總結 Python單元測試unittest Python3 unittest斷言詳解 Python3 unittest單元測試 Python HTMLTestRunner 學習

前言 為什麼需要單元測試? 如果沒有單元測試,我們會遇到這種情況:已有的健康執行的程式碼在經過改動之後,我們無法得知改動之後是否引入了Bug。如果有單元測試的話,只要單元測試全部通過,我們就可以保證沒有Bug被引入。因此,單元測試是保證軟體工程質量的一個很重要的方面。 Python中的單元測試 Pyt

Python自動化測試框架-共通方法匯總

pytho 自動化 writer rand save 自動化測試框架 n) 很慢 叠代 1.滾動滾動條(有的時候頁面元素element取得對但是並沒有回顯正確的數據,可能是因為頁面第一次加載很慢,所以頁面可能做了滾動到哪裏就加載到哪裏的效果,此刻我們就需要用到滾動條自動滾動

python+selenium自動化測試框架(1)

python+selenium自動化測試框架(1) 自己第一次寫部落格,一方面想提高自己的寫作能力,另一方面,自己花費時間解決的問題,記錄下來,以後要是忘記啦,可以隨時檢視,當然要是大家碰到和我一樣的問題,也是可以檢視的 我用的是python3.6 一:python中實現程式碼與資料

python+selenium自動化測試框架(2)

HTMLTestRunner自動化生成測試報告的使用 這個本人也是第一次使用這個工具,python2是可以直接使用的,但是python3.0不能直接拿來使用它。需要進行修改: 他是存在python裡面的lib資料夾裡面 開啟你的HTMLTestruner.py檔案: 第94行,將import

python unittest單元測試框架-2discover

img src ase art cal 單元 runt tca __main__ 基於TestLoader提供的discover方法實現用例執行 當用例達達到數十條後,在runtest.py文件中通過addTest()添加/刪除測試用例就非常麻煩。此時可以使用discove

python unittest單元測試框架-3用例執行順序、多級目錄、用例類別、

1.用例執行順序 unittest預設會按照ascii碼的順序,依次執行。類名——方法名排序,使用discover也是預設排序。如果不想使用預設排序,就使用testsuite測試集的方式。 import unittest class TestB(unittest.TestCase): def se

python介面自動化測試框架(post提交新增變數)

1、python介面測試框架包含哪幾部分 資料來源-> GET/POST 傳送請求->接收返回結果->斷言測試結果->生成測試報告(html報告)->網頁報告   2、python介面測試框架 config:存放配置檔案,比如資料庫設定、郵件配置、log配置

第一章——自動化測試框架總結Cucumber

 cucumber官網地址:https://cucumber.io/ 1. 什麼是BDD BDD全稱Behavior Driven Development,譯作"行為驅動開發",是基於TDD (Test Driven Development 測試驅動開發)的軟體開

unittest單元測試框架總結

unittest單元測試框架不僅可以適用於單元測試,還可以適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。今天筆者就總結下如何使用unittest單元測試框架來進行WEB自動化

大神總結超詳細unittest單元測試框架總結

    unittest單元測試框架不僅可以適用於單元測試,還可以適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,並且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。今天筆者就總結下如何使用unittest單元測試框架來進行WEB自動化測

Python unittest單元測試框架

一、python unittest簡介 unittest是python下的單元測試框架,是java JUnit的python版本, 跟其它語言下的單元測試框架風格類似,unittest支援自動化測試、共享setup和teardown程式碼、測試聚合成集、獨立於報告框架。unittest模組提供了

python測試系列教程——python+Selenium自動化測試框架

全棧工程師開發手冊 (作者:欒鵬) 需要的環境 瀏覽器(Firefox/Chrome/IE…) Python Selenium Selenium IDE(如果用Firefox) FireBug、FirePath(如果用Firefox) chromedri

從零開始到設計Python+Selenium自動化測試框架-如何開始

        如何開始學習web ui自動化測試?如何選擇一門指令碼語言?選擇什麼自動化測試工具?        本人已經做測試快5年,很慚愧,感覺積累不夠,很多測試都不會,三年多功能測試,最近兩年

《一頭扎進》系列之Python+Selenium自動化測試框架實戰篇6 - 價值好幾K的框架,呦!這個框架還真牛叉哦!!!

1. 簡介   本文開始介紹如何通過unittest來管理和執行測試用例,這一篇主要是介紹unittest下addTest()方法來載入測試用例到測試套件中去、用addTest()方法來載入我們測試用例到suite中去和利用discover()方法去載入一個路徑下所有的測試用例。 2. addTes

《一頭扎進》系列之Python+Selenium自動化測試框架實戰篇7 - 年底了還沒升職加薪,年終獎全靠它了!!!

1. 簡介   截止到上一篇文章為止,框架基本完全搭建完成。那麼今天我們要做什麼呢????聰明如你的小夥伴或者是童鞋一定已經猜到了,都測試完了,當然是要生成一份高階大氣上檔次的測試報告了。沒錯的,今天巨集哥就帶領你們將這部分內容也整合到這個框架中。本文來介紹如何生成自動化測試報告,前面文章尾部提到了利用HTM

Python介面自動化測試框架: pytest+allure+jsonpath+requests+excel實現的介面自動化測試框架(學習成果)

[toc] # 廢話 最近在自己學習介面自動化測試,這裡也算是完成一個小的成果,歡迎大家交流指出不合適的地方,原始碼在文末 # 問題 整體程式碼結構優化未實現,導致最終測試時間變長,其他工具單介面測試只需要39ms,該框架中使用了101ms,考慮和頻繁讀寫用例資料導致 # 環境與依賴 | 名稱

《selenium2 python 自動化測試實戰》(21)——unittest單元測試框架解析

nbsp add pic post 二維碼 mage ron 而且 aaa unittest是展開自動化測試的基礎——這個框架很重要! 我們先自己寫一個測試類: 1、被測試類 Widthget.py: # coding: utf-8class Wi