unittest生成測試報告

1.單元測試

  • 單元測試是指對軟件中的最小可測試單元進行檢查和驗證,Python中有一個自帶的單元測試框架unittest模塊,不只能夠適用於單元測試,還能夠適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,而且提供了豐富的斷言方法,判斷測試用例是否經過,最終生成測試結果;

2.unittest庫中的基本組件

  • unittest.TestCase():是全部測試用例類繼承的基本類,一個類只要繼承了unittest中的TestCase類就是一個測試用例類,就能夠在類中寫測試用例;
from unittest import TestCase, main

class MyTest(TestCase):  # 繼承unittest.TestCase
    def setUp(self):
        # 測試用例執行前的初始化工做
        print('開始執行')

    def tearDown(self):
        # 測試用例執行以後的善後工做
        print('執行完畢')

    def testWay(self):
        print('這是測試用例')

if __name__ == '__main__':
    main()  # 運行全部的測試用例
  • unittest.TestSuite():用來建立測試套件,其中有一個addTest()方法能夠將一個或多個測試用例添加到測試套件中,先添加的哪一個方法就先運行哪一個方法;html

  • unittest.TextTextRunner():經過該類中的run()方法來運行suite所組裝的測試用例;python

  • unittest.defaultTestLoader():經過該類下面的discover()方法可自動根據測試目錄start_dir匹 配查找測試用例模塊(以test開頭,以.py結尾的文件,例如:test*.py), 並將查找到的測試用例 組裝到測試套件,所以能夠直接經過run()方法執行discover;web

  • unittest.skip():裝飾器,可過濾不須要執行的用例,使這個用例不執行;數據庫

  • unittest.main():能夠方便的將一個單元測試模塊變爲可直接運行的測試腳本,main()方法使 用TestLoader類來搜索全部包含在該模塊中以「test」命名開頭的測試方法,並自動執行他們 ;cookie

3.TestCase類中的方法

  • setUp()方法:用於測試用例執行前的初始化。如測試用例中須要訪問數據庫,能夠在setUp中創建數據庫鏈接並進行初始化。若是測試用例須要登陸web,能夠先獲取cookie,獲取文件句柄;框架

  • tearDown()方法:用於測試用例執行以後的善後工做,如關閉數據庫鏈接,關閉文件;單元測試

  • assert*():斷言方法,至關於if-else裏面的條件判斷,在執行測試用例的過程當中,最終用例是否執行經過,是經過判斷測試獲得的實際結果和預期結果是否相等決定的;測試

4.unittest中經常使用的斷言方法

  • assertEqual(self, first, second, msg=None):判斷兩個參數是否相等,若是相等則測試用例經過;ui

  • assertNotEqual(self, first, second, msg=None):判斷兩個參數是否相等,若是不相等則測試用例經過;code

  • assertTrue(self, expr, msg=None):判斷是否爲真,爲真則測試用例經過;

  • assertFalse(self, expr, msg=None):判斷是否爲假,爲假則測試用例經過;

  • assertIs(a, b, msg=None):斷言a是不是b,若是是則測試用例經過。

  • 更多的斷言方法能夠查看官網:https://docs.python.org/3/library/unittest.html#assert-methods

5.編寫測試用例

  • 首先從unittest模塊中導入TestCase、main等須要用到的類;

  • 而後自定義一個類繼承TestCase類;

  • 能夠重寫TestCase類中的setUp()初始化方法,和tearDown()清理方法,這兩個方法是成對出 現的;

  • 而後編寫以字母開頭的測試用例,執行順序默認是根據ASCII碼的順序加載測試用例,數字與字母的順序爲:0-9,A-Z,a-z

  • 最後調用unittest.main()方法將一個單元測試模塊變成能夠直接運行的測試腳本,而後自動執行測試用例;

from unittest import TestCase, main
class MyTestCase(TestCase):
    # setUp、tearDown每次執行一個test開頭的方法時,都會調用一次
    def setUp(self):
        print('setup')
    def tearDown(self):
        print('tearDown')
    def test_1(self):
        print('第一個測試用例')
    def test_2(self):
        print('第二個測試用例')
if __name__ == '__main__':
    main()

參考:https://www.9xkd.com/user/plan-view.html?id=5676194510

相關文章
相關標籤/搜索