pytest -k: 更快更方便的測試用例選擇

一、pytest概述

pytest 是一個流行的 Python 測試框架,其具有易於使用,簡化測試編寫和擴展性強的優點。pytest 使用了 Python 自帶的 assert 語句,幫助開發者編寫簡單的測試用例,同時它還提供了眾多的插件,可以擴展 pytest 的功能。

二、測試用例選擇

測試執行速度是一個很重要的問題,特別是當測試用例數量很多的時候。然而,測試用例選擇很可能成為性能瓶頸,因為所有未被選擇的測試用例仍需調用 setUp 和 tearDown 方法。pytest -k 選項提供了一個簡便快捷的方式,可以按照名稱對基礎測試用例進行選擇。

三、pytest -k 用法

pytest -k 選項可以按照測試用例名稱對測試套件進行選擇。具體來說,這個選項可以通過以下方式來使用:

pytest -k "expression"

其中,”expression” 是可以通過 Python 語言進行編寫的字符串,它可以包含 Python 運算符和函數的調用,且對大小寫敏感。pytest -k 選項會匹配用例名稱中的 “expression” 子串,從而執行與匹配項相關的測試用例。

例如,如果我們有以下測試用例:

def test_add():
    assert 1+1 == 2
    
def test_subtract():
    assert 2-1 == 1
    
def test_divide():
    assert 4/2 == 2

可以通過以下命令行語句來執行單元測試:

pytest -v test_sample.py

結果如下:

test_sample.py::test_add PASSED
test_sample.py::test_subtract PASSED
test_sample.py::test_divide PASSED

如果我們只想運行包含 add 的測試用例,在命令行中使用 -k 參數:

pytest -v -k "add" test_sample.py

結果如下:

test_sample.py::test_add PASSED

通過這種方式,我們可以迅速、有效的選擇和執行特定的測試用例,從而幫助我們更快的了解測試用例的運行結果。

四、pytest -k 高級用法

在 pytest 中,-k 參數不僅僅可以用單個測試用例名稱進行匹配,還支持使用 Pyhon 表達式進行匹配。匹配表達式的格式為:”

pytest -k "expression"

這裡的表達式可以是任意合法的 Python 表達式,包括運算符、函數調用等。pytest -k 會按照表達式的規則對測試用例進行匹配。

例如,我們有以下三個測試用例:

def test_add():
    assert 1+1 == 2

def test_subtract():
    assert 2-1 == 1

@mark.parametrize("x, y, expected", [(3, 2, 5), (1, 2, 3)])
def test_add_param(x, y, expected):
    assert x + y == expected

現在我們想運行包含 “add” 單詞或參數數量大於等於3的用例。在命令行中使用 -k 參數:

pytest -v -k "add or len(parametrize.args)>=3" test_sample.py

結果如下:

test_sample.py::test_add PASSED
test_sample.py::test_add_param[3-2-5] PASSED

以上方式體現了 pytests 的擴展性和靈活性。開發者可以根據具體需要自由組合和匹配測試用例,以便快速運行測試。

五、pytest -k 的其他應用

除了按名稱和表達式對用例進行選擇和過濾外,pytest -k 還可以用於:按類選擇,設置自定義標記(marker)過濾和更多自定義實現。

例如,我們有一個包含了兩個測試類的測試套件:

class TestMath:

    def test_add(self):
        assert 1 + 1 == 2

class TestStat:

    def test_mean(self):
        assert sum([1, 2, 3]) / 3 == 2.0

我們可以通過以下命令來選擇 TestMath 類中的測試用例:

pytest -v -k "TestMath" test_sample.py

結果如下:

test_sample.py::TestMath::test_add PASSED

除此之外,pytest -k 參數還可以用於支持一系列其他過濾操作,例如限制測試運行時間、錯誤報告等。因此,可以說 pytest -k 是一款功能強大的測試用例選擇工具。

原創文章,作者:NLBRR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/330918.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NLBRR的頭像NLBRR
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相關推薦

  • JDK Flux 背壓測試

    本文將從多個方面對 JDK Flux 的背壓測試進行詳細闡述。 一、Flux 背景 Flux 是 JDK 9 對響應式編程的支持。它為響應式編程提供了一種基於推拉模型的方式,以支持…

    編程 2025-04-29
  • Powersploit:安全評估與滲透測試的利器

    本文將重點介紹Powersploit,並給出相關的完整的代碼示例,幫助安全人員更好地運用Powersploit進行安全評估和滲透測試。 一、Powersploit簡介 Powers…

    編程 2025-04-28
  • Python接口自動化測試

    本文將從如下多個方面對Python編寫接口自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 接口自動化測試是軟件測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • HR測試用例生成工具:hrtest的全面解析

    本文將從使用、功能、優點和代碼示例等多個方面詳細介紹HR測試用例生成工具hrtest。 一、使用 HR測試用例生成工具hrtest是一款可以自動生成測試用例的工具,省去了繁瑣的手動…

    編程 2025-04-27
  • Android JUnit測試完成程序自動退出決方法

    對於一些Android JUnit測試的開發人員來說,程序自動退出是一個經常面臨的困擾。下面從多個方面給出解決方法。 一、檢查測試代碼 首先,我們應該仔細檢查我們的測試代碼,確保它…

    編程 2025-04-25
  • Kali Linux:滲透測試人員必備的工具

    一、Kali Linux是什麼 Kali Linux是一款以安全滲透測試為目的的操作系統,包含了眾多滲透測試所需的工具和軟件。基於Debian發行版的Kali Linux擁有着極強…

    編程 2025-04-25
  • crontab測試的詳細闡述

    一、crontab的概念 1、crontab是什麼:crontab是linux操作系統中實現定時任務的程序,它能夠定時執行與系統預設時間相符的指定任務。 2、crontab的使用場…

    編程 2025-04-25
  • POST接口測試完整指南

    一、POST接口測試介紹 POST接口測試是一種測試的方式,主要用於測試Web應用程序。它是通過POST HTTP方法發送HTTP請求到Web服務器並且對服務器的響應進行驗證的一種…

    編程 2025-04-25
  • Selenium Edge:探索自動化瀏覽器測試的更高境界

    一、利用Selenium Edge提升Web應用程序質量 Selenium Edge是一款基於Selenium WebDriver的增強版自動化瀏覽器測試工具,支持Edge瀏覽器。…

    編程 2025-04-25
  • NC命令測試端口詳解

    一、NC命令簡介 NC命令是一款重要的網絡工具,它是一款強大的網絡工具,它可以將數據包準確的傳輸和接收,提供了一種高效的數據傳輸方式。NC的全稱是Netcat,它基於TCP/IP協…

    編程 2025-04-24

發表回復

登錄後才能評論