pytest執行命令學習筆記

一、pytest是什麼

pytest是一個基於Python的測試框架,它可以輕鬆的創建單元測試、功能測試和集成測試。與其他Python測試框架相比,pytest具有簡潔易懂的測試設計風格、跨平台支持、插件機制支持和豐富的API和鉤子函數等優點。

在開始使用pytest之前,需要安裝pytest模塊。可以在終端中使用pip安裝:

pip install pytest

安裝成功後,就可以在項目目錄下創建測試文件開始測試了。

二、pytest的基礎用法

pytest最常用的兩個參數是-m和-k。其中-m參數用於選擇標記(mark)測試用例,-k參數用於根據表達式來選擇測試用例。

-m參數

在pytest中,可以為測試用例添加標記,以便於測試時選擇特定的測試用例。例如,可以為一組測試用例添加一個“slow”標記,表示測試用例運行較慢,需要更長的時間。可以使用-m參數來選擇標記(mark)的測試用例:

pytest -m <mark>

其中<mark>是標記的名稱,可以是一個字符串或多個字符串,多個字符串之間用“and”、“or”、“not”進行邏輯連接。例如,如果需要運行所有帶有“slow”標記的測試用例,可以執行如下命令:

pytest -m slow

如果需要運行所有帶有“slow”標記或帶有“gui”標記的測試用例,可以執行如下命令:

pytest -m "slow or gui"

-k參數

在pytest中,可以通過表達式來選擇特定的測試用例。例如,可以使用“test_login”來選擇所有名稱中包含“test_login”的測試用例。可以使用-k參數來根據表達式選取測試用例:

pytest -k <expression>

其中<expression>是一個表達式,用於選取測試用例。表達式可以包含測試用例名稱、測試用例文件名或標記等信息。例如,如果需要運行所有測試用例名稱中包含“login”的測試用例,可以執行如下命令:

pytest -k login

如果需要運行所有在tests文件夾下,名稱中包含“login”字符的測試用例,可以執行如下命令:

pytest -k "login and tests"

三、pytest的進階用法

pytest具有很多高級特性,如參數化、測試夾具、插件機制等。

參數化

參數化是pytest中非常強大和常用的特性之一,可以通過參數化來簡化測試用例和測試數據的編寫。在測試用例中使用pytest.mark.parametrize裝飾器來標記參數化的參數,然後在測試函數的參數列表中使用這些參數。例如:

import pytest

@pytest.mark.parametrize("arg1, arg2, expected", [
    (1, 2, 3),
    (2, 3, 5),
    (10, 20, 30)
])
def test_addition(arg1, arg2, expected):
    result = arg1 + arg2
    assert result == expected

以上代碼可以傳入不同的參數,執行三次函數運算,檢測運算是否正確。

測試夾具

pytest支持各種類型的測試夾具,例如函數級別的夾具、模塊級別的夾具、會話級別的夾具、自定義夾具等。使用夾具可以優化測試結構、減少代碼冗餘、提升測試效率和可讀性。定義的夾具可以使用@pytest.fixture裝飾器標記,表示當前函數是一個夾具函數,使用夾具時在測試函數的參數列表中使用夾具名即可。例如:

import pytest

@pytest.fixture()
def text_data():
    return 'pytest'

def test_demo(text_data):
    assert text_data == 'pytest'

以上代碼利用fixture返回的數據,測試text_data是否等於’pytest’,從而達到測試夾具的目的。

插件機制

pytest具有豐富的插件機制,支持各種類型的插件,如測試夾具、收集器、HTML測試報告、Junit測試報告、測試覆蓋率等。可以在pytest.ini配置文件中指定插件,也可以在命令行中通過–install-plugin選項安裝插件。例如,如果需要安裝pytest-html插件,可以執行如下命令:

pip install pytest-html

安裝成功後,在命令行中執行如下命令,可以生成HTML格式的測試報告:

pytest --html=report.html

四、pytest的實戰案例

以下是一個簡單的pytest測試代碼,用於測試一個計算器程序:

import pytest
import calculator

def test_addition():
    c = calculator.Calculator()
    result = c.add(1, 2)
    assert result == 3

def test_subtraction():
    c = calculator.Calculator()
    result = c.subtract(2, 1)
    assert result == 1

@pytest.mark.parametrize("arg1, arg2, expected", [
    (1, 2, 3),
    (2, 3, 5),
    (10, 20, 30)
])
def test_addition_with_parameters(arg1, arg2, expected):
    c = calculator.Calculator()
    result = c.add(arg1, arg2)
    assert result == expected

@pytest.fixture()
def test_data():
    data = {
        'arg1': 1,
        'arg2': 2,
        'expected': 3
    }
    return data

def test_addition_with_fixture(test_data):
    c = calculator.Calculator()
    result = c.add(test_data['arg1'], test_data['arg2'])
    assert result == test_data['expected']

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 12:00
下一篇 2025-01-02 12:00

相關推薦

  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個服務器上執行遠程另一個服務器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • 剖析命令執行函數

    在編程開發過程中,命令執行函數是非常常見的一個概念。它是指接受一個命令字符串,並將其解析執行,返回相應的結果或錯誤信息的函數。本文將從多個方面對命令執行函數進行詳細的闡述,包括其定…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python中獲取用戶輸入命令的方法解析

    本文將從多個角度,分別介紹Python中獲取用戶輸入命令的方法,希望能夠對初學者有所幫助。 一、使用input()函數獲取用戶輸入命令 input()是Python中用於獲取用戶輸…

    編程 2025-04-27
  • Python3 執行 cmd 命令用法介紹

    本文將詳細講解如何使用Python3執行cmd命令,包括使用subprocess模塊、os模塊、Popen方法、system方法等多個方面的實現方法。 一、使用subprocess…

    編程 2025-04-27
  • 全面解析Python直接命令更新

    本文將從多個方面對Python直接命令更新進行詳細闡述,包括更新命令的基本用法、更新過程中可能遇到的問題及其解決方法等等。 一、更新命令基本用法 Python直接命令更新是一種非常…

    編程 2025-04-27
  • Python啟動命令用法介紹

    Python是一門解釋型語言,與許多編譯型語言不同,它不需要編譯成機器碼,而是通過解釋器一行一行讀取程序,逐句翻譯成目標代碼然後運行。因此,對於Python程序員來說,學會如何正確…

    編程 2025-04-27

發表回復

登錄後才能評論