什麼是 Python 單元測試?


什麼是單元測試?

單元測試是一種軟體測試型別,其中測試系統的每個獨立元件。單元測試是開發人員的重要實踐。它確保軟體的每個元件都能按預期正常執行。單元測試主要由開發人員在軟體開發的編碼階段執行。

單元測試使解決問題變得容易,因為開發人員可以知道系統或軟體的哪個特定元件存在問題,並且開發人員可以修復該特定單元。

Python 單元測試

Python 擁有一個名為 **unittest** 的內建包,用於執行單元測試。單元測試使程式碼具有未來相容性,因為開發人員會預測程式碼可能失敗的可能情況,並針對這些情況測試程式碼。即使我們可能會錯過某些情況,但仍然會解決大多數情況,並且程式碼將針對這些情況進行測試。

可以透過以下方式在 Python 程式中匯入此模組來使用 unittest 模組。

import unittest

示例

假設我們有一個簡單的函式,它計算正方形的面積。將此檔案儲存為名為“area.py”的檔案。

def area(a):
   return (a+a)

現在,讓我們為上述函式編寫單元測試程式碼,這將讓我們知道我們的函式是否給出了預期的輸出。將單元測試程式碼檔案儲存為名為“unit_test.py”的檔案。

**unit_test.py** &mnus;

from area import *
import unittest

class Testarea(unittest.TestCase):
   def test_area(self):
      self.assertAlmostEqual(area(5),25)
      self.assertAlmostEqual(area(3),9)
      self.assertAlmostEqual(area(4),16)

在這裡,匯入了包含要測試的程式碼的檔案。使用了 unittest 方法 **assertAlmostEqual()**。這將使用一些輸入呼叫 area 函式,第二個引數包含函式要返回的預期輸出。如果 area() 返回的輸出等於預期輸出,則測試透過,否則測試失敗。

現在讓我們從命令提示符執行 unit_test.py 以檢查我們的 area() 程式碼是否透過測試。

從命令提示符執行以下命令以執行 unit_test 檔案。

python -m unittest unit_test.py

輸出

C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py
F
======================================================================
FAIL: test_area (unit_test.Testarea)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "C:\Users\Inderjit Singh\Desktop\unit_test.py", line 7, in test_area
      self.assertAlmostEqual(area(5),25)
AssertionError: 10 != 25 within 7 places (15 difference)

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)

我們的程式碼單元測試失敗了。原因在回溯中給出。第一個函式 self.assertAlmostEqual(area(5),25) 導致我們的程式碼失敗。因為函式返回 10,但預期輸出是 25。

由於這是一個簡單的函式,我們知道如何修復它。我們的 area() 程式碼是錯誤的。它應該返回 (a*a) 而不是 (a+a)。

讓我們修復 area() 程式碼並重新執行單元測試。

def area(a):
   return (a*a)

重新執行 unit_test.py

C:\Users\Inderjit Singh\Desktop>python -m unittest unit_test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

現在,由於我們已在 area() 中更正了程式碼,因此它成功執行並顯示 OK 狀態。這確保了我們的程式碼針對 unit_test.py 檔案中指定的所有情況都能完美執行。

這是一個非常簡單的想法,旨在提供有關單元測試的概念。unittest 模組中還有許多其他函式在開發過程中用於單元測試。

更新於: 2021年6月11日

457 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.