iT邦幫忙

2024 iThome 鐵人賽

DAY 30
0
Python

讓Python不拍勝-實用套件實作與介紹系列 第 30

[DAY30]Python自動化測試-Pytest(五)

  • 分享至 

  • xImage
  •  

今天這篇一樣介紹 Pytest,因為 Pytest 提供的裝飾器功能蠻多的,所以需要拆成好幾篇介紹,文章篇幅才不會太長,那就繼續把之前沒介紹完的基礎應用和裝飾器介紹完吧

更多的常用裝飾器

@pytest.mark.自定義

可以自己創建標記,用於對測試進行分組或特殊處理等用途

首先需要在同個料夾下創立一個pytest.ini的檔案,然後在裡面定義標記,格式如下:
標記名稱: 備註

  • pytest.ini
[pytest]
markers =
    GroupA: A組測試
    GroupB: B組測試

可在終端機輸入下面指令確認是否有定義成功

pytest --markers

輸出結果
image

接下來在測試檔中加入自行定義的標記裝飾器

  • project_test.py
import project
import pytest

@pytest.mark.GroupA
@pytest.mark.parametrize("a, b, return_", [
    (1, 2, 3),
    (3, 4, 7),
    (2, 6, 8),
    (2, 7, 9),
    (2, 8, 10),
])
def test_add(a, b, return_):
    assert project.add(a, b) == return_

@pytest.mark.GroupB
def test_sub():
    assert project.sub(2, 6) == -4
    assert project.sub(2, 7) == -5

@pytest.mark.GroupA
def test_mul():
    assert project.mul(2, 6) == 12
    assert project.mul(2, 7) == 14

@pytest.mark.GroupB
def test_div():
    assert project.div(6, 2) == 3
    assert project.div(8, 2) == 4
    
@pytest.mark.GroupA
def test_ironman():
    assert project.ironman(26) == "Share More Gain More: DAY26"
    assert project.ironman(27) == "Share More Gain More: DAY27"

在終端機輸入以下指令來測試特定的標記
-m:用來指定標記

pytest -v project_test.py -m GroupA

測試結果

  • 標記為 GroupA 的測試結果
    image

  • 標記為 GroupB 的測試結果
    image

更多 Pytest 的指令操作

執行指定的測試

在測試指令的後面加上::測試函數名稱,可以指定只測試該函數

pytest -v project_test.py::test_ironman

輸出結果
image

測試符合指定關鍵字的函數

在測試指令的後面加上-k "keyword",可以測試符合指定關鍵字的函數

pytest -v project_test.py -k "sub"

輸出結果

  • 測試函數名稱有 sub 的函數
    image

那 Pytest 這個套件就簡單介紹到這裡,希望能幫助到讀者了解自動化測試的意義及使用方式,有任何疑問或補充,歡迎在下方留言區一起討論!


上一篇
[DAY29]Python自動化測試-Pytest(四)
系列文
讓Python不拍勝-實用套件實作與介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言