什麼是 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 模組中還有許多其他函式在開發過程中用於單元測試。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP