
- Pytest 教程
- Pytest - 主頁
- Pytest - 簡介
- Pytest - 設定環境
- 識別測試檔案和函式
- Pytest - 從基本測試開始
- Pytest - 檔案執行
- 執行測試套件的子集
- 測試名稱的子字串匹配
- Pytest - 對測試進行分組
- Pytest - 固定裝置
- Pytest - conftest.py
- Pytest - 測試引數化
- Pytest - Xfail/Skip 測試
- 在 N 次測試失敗時停止測試套件
- Pytest - 並行執行測試
- 測試執行結果為 XML
- Pytest - 總結
- Pytest - 結論
- 有用的 Pytest 資源
- Pytest - 快速指南
- 有用的 Pytest 資源
- Pytest - 討論
Pytest - 測試引數化
對測試進行引數化是為了在多個輸入集上執行測試。我們可以透過使用以下標記來做到這一點 −
@pytest.mark.parametrize
將以下程式碼複製到一個名為 test_multiplication.py 的檔案中 −
import pytest @pytest.mark.parametrize("num, output",[(1,11),(2,22),(3,35),(4,44)]) def test_multiplication_11(num, output): assert 11*num == output
在此測試中,將輸入與 11 相乘,並將結果與預期輸出進行比較。此測試有 4 組輸入,每組有 2 個值 - 一個是要與 11 相乘的數字,另一個是預期結果。
透過執行以下命令執行測試 −
Pytest -k multiplication -v
上述命令將生成以下輸出 −
test_multiplication.py::test_multiplication_11[1-11] PASSED test_multiplication.py::test_multiplication_11[2-22] PASSED test_multiplication.py::test_multiplication_11[3-35] FAILED test_multiplication.py::test_multiplication_11[4-44] PASSED ============================================== FAILURES ============================================== _________________ test_multiplication_11[3-35] __________________ num = 3, output = 35 @pytest.mark.parametrize("num, output",[(1,11),(2,22),(3,35),(4,44)]) def test_multiplication_11(num, output): > assert 11*num == output E assert (11 * 3) == 35 test_multiplication.py:5: AssertionError ============================== 1 failed, 3 passed, 8 deselected in 0.08 seconds ==============================
廣告