1. 程式人生 > 其它 >unitest自動化測試框架核心要素以及應用

unitest自動化測試框架核心要素以及應用

1. unittest核心要素

  • unittest介紹

    • 測試框架,不僅僅用於單元測試

    • python自動的測試包

    • 用法和django.test.TestCase類似

1.1、unitest介紹和核心要素

   自動化測試最初接觸的就是python中的unitest框架,因為它是python自帶的一套測試框架,學習起來也相對較容易,下面是unitest框架的四個概念(較為一目瞭然):

  test case:就是我們的測試用例,unittest中提供了一個基本類TestCase,可以用來建立新的測試用例,一個TestCase的例項就是一個測試用例;unittest中測試用例方法都是以test開頭的,且執行順序會按照方法名的ASCII值排序。

  test fixure:測試夾具,用於測試用例環境的搭建和銷燬。即用例測試前準備環境的搭建(SetUp前置條件),測試後環境的還原(TearDown後置條件),比如測試前需要登入獲取token等就是測試用例需要的環境,執行完後執行下一個用例前需要還原環境,以免影響下一條用例的測試結果。

​   test suite:測試套件,用來把需要一起執行的測試用例集中放到一塊執行,相當於一個籃子。我們可以使用TestLoader來載入測試用例到測試套件中。

​   test runner:用來執行測試用例的,並返回測試用例的執行結果。它還可以用圖形或者文字介面,把返回的測試結果更形象的展現出來,如:HTMLTestRunner

1.2、unittest核心要素的使用

# ---*--- encoding: utf-8 ---*---

'''
@Author : {gan sir}
@Time : 2022/3/4 14:22
'''
import unittest
#測試類、繼承於unittest.TestCase
class MyTest(unittest.TestCase):
    def test_1(self):
print("test_1")
  def test_1(self):
print("test_1")
if __name__ == '__main__':

#類的外面
#2、容器,容器新增測試用例
suit = unittest.BaseTestSuite()
#測試用例的執行順序,按新增的順序執行
suit.addTest(MyTest('test_1'))
    suit.addTest(MyTest('test_1'))
#3、執行容器中的測試用例
runner = unittest.TextTestRunner()
runner.run(suite)

1.3、瞭解Fixture

測試類中:實現了前、後置方法,他就是一個fixture

1.4、掌握defaultTestLoader

# ---*--- encoding: utf-8 ---*---
'''
@Author : {gan sir}
@Time : 2022/3/4 14:22
'''
import unittest

# 測試類、繼承於unittest.TestCase
class MyTest(unittest.TestCase):
def test_1(self):
print("test_11111111111111")

def test_1(self):
print("test_2222222222222")

if __name__ == '__main__':
#2.容器,容器新增測試用例
#預設找指定路徑下,所有test開標頭檔案
#引數1;路徑,引數2:指定檔案
suite = unittest.defaultTestLoader.discover('./','test_2_demo.py')

#3.執行容器中的測試用例
runner = unittest.TextTestRunner()
runner.run(suite)

2、掌握unitest基本使用

import unittest       # unittest的單元測試框架

class TestConut(unittest.TestCase): # TestConut指類的名字,繼承了TestCase這個類,即擁有了該類的所有方法,首字母大寫
    @classmethod                  
def setUpClass(cls) -> None:
print('setUpClass')
    def setUp(self) -> None:  # 這裡setup指執行測試用例之前的預操作,即每次執行一條測試用例的時候都會執行該操作              
print('test start')
    def test_01(self):    # 此框架所定義的函式名執行測試用例的時候必須以test開頭,且執行測試用例時會預設按照阿拉伯數字的順序執行及1,2,3,4...                 
        print('執行test_01測試')                  
def test_02(self):
print('執行test_02測試')
def test_03(self):
print('執行test_03測試')

   def test_s(self):
     print('test_s')
     a = 1 + 1
     self.assertEqual(a,2,'結果不為2')
   def test_f(self):
     print('test_f')
     a = 1 + 2
     self.assertEqual(a,3,'結果不為3')
    def tearDown(self):    # 這裡和上面的setup相對應,即執行完每個測試用例之後的結束操作,如關閉瀏覽器                  
print('test end')
@classmethod
def tearDownClass(cls):
print('最後結束的!')
if __name__ =='_main_':
unittest.main()

3、斷言

#  arg1和arg2相等,測試通過,標誌為T。

#  arg1和arg2不相等,測試不通過,標誌為F,丟擲異常,顯示msg的資訊

   unittest.assertEqual(arg1,arg2,msg=None)

本文來自部落格園,作者:ganfd,轉載請註明原文連結:https://www.cnblogs.com/ganfd/p/15965210.html