經過 15 天,終於來到此次主題的重點 - pytest ,使用它後我們才從「自動化」走向「自動化測試」。
如同其名,它是基於 python 上的測試框架,可以與 selenium 合用實現網頁自動化測試,它有以下幾個優點
我們可以寫一個簡單的平方函數實際測試 pytest 功能,並用多個方法實作重複執行測試。
首先用 pip 把 pytest 下載到我們的專案
pip install pytest
再來新增一檔案 test_square.py
實際撰寫函式,使用 random 隨機生成數字
import random
# 平方函數
def square(x):
return x * x
# 平方測試函數
def test_square():
x = random.randint(1, 100)
assert square(x) == x * x
然後在終端輸入
pytest
就會開始測試
PS C:\Users\user\Documents\Project\pytest_project> pytest
===================================================================== test session starts ======================================================================
platform win32 -- Python 3.12.6, pytest-8.3.3, pluggy-1.5.0
rootdir: C:\Users\user\Documents\Project\pytest_project
collected 1 item
test_square.py .
pytest 除了可以執行特定的測試檔外,若沒有特別指定檔案, pytest 會自動找所有檔案名稱開頭有 test_ 的檔案執行測試。
若想要重複執行測試,有幾種方法
首先要安裝插件
pip install pytest-repeat
再終端輸入的地方輸入
pytest -s --count=3 --repeat-scope=session
count 是設定次數, repeat-scope 是設定參數範圍,有 funcion, class, module, sesssion 可以選擇,預設為 function。
首先要 import pytest
import pytest
再來在函數的開頭加入 @pytest.mark.parametrize
import pytest
def square(x):
return x * x
@pytest.mark.parametrize("x", [1, 2, 3, 4, 5])
def test_square(x):
assert square(x) == x * x
這個方法除了能重複執行測試外還可以自己設定測試的值,大大增加測試的靈活性。
今天講到的只是 pytest 的皮毛而已,下一篇預計會再更深入的解釋 pytest 的各項功能。