日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

從小白到測試專家:掌握Pytest的實用技巧和優秀實踐

來源: 責編: 時間:2023-11-08 17:04:02 347觀看
導讀pytest是一個功能豐富且易于使用的Python測試框架,它建立在Python標準庫的unittest模塊之上,提供了更簡潔、靈活和可讀性強的測試代碼編寫方式。下面,我將按照步驟引導您學習pytest。步驟1:安裝pytest首先,您需要安裝pytes

qJd28資訊網——每日最新資訊28at.com

pytest是一個功能豐富且易于使用的Python測試框架,它建立在Python標準庫的unittest模塊之上,提供了更簡潔、靈活和可讀性強的測試代碼編寫方式。下面,我將按照步驟引導您學習pytest。qJd28資訊網——每日最新資訊28at.com

步驟1:安裝pytest

首先,您需要安裝pytest。您可以使用pip包管理器來安裝它。打開終端(或命令提示符)并執行以下命令:qJd28資訊網——每日最新資訊28at.com

pip install pytest

步驟2:編寫測試函數

在學習如何編寫測試之前,讓我們先了解一下pytest測試的基本結構。qJd28資訊網——每日最新資訊28at.com

在pytest中,測試函數以test_開頭,例如test_addition()。這些函數是用來測試代碼的不同部分,每個測試函數應該只關注一個特定的功能或行為。qJd28資訊網——每日最新資訊28at.com

讓我們創建一個簡單的示例來說明。在您的項目目錄下,創建一個名為test_calculator.py的文件,并在其中編寫以下代碼:qJd28資訊網——每日最新資訊28at.com

def add(a, b):    return a + bdef test_addition():    result = add(3, 5)    assert result == 8

在上面的示例中,我們定義了一個add()函數來執行加法運算,并編寫了一個test_addition()函數來測試這個加法函數。在測試函數中,我們調用add(3, 5)并使用assert語句來驗證結果是否等于8。qJd28資訊網——每日最新資訊28at.com

步驟3:運行測試

現在,我們已經編寫了一個簡單的測試函數,讓我們運行它并查看結果。在終端中,導航到項目目錄,并執行以下命令:qJd28資訊網——每日最新資訊28at.com

pytest

pytest將會自動查找項目中以test_開頭的測試函數,并執行它們。您應該會看到一個類似于以下內容的輸出:qJd28資訊網——每日最新資訊28at.com

============================= test session starts ==============================platform linux -- Python 3.x.y, pytest-x.y.z, py-x.y.z, pluggy-x.y.zrootdir: /path/to/your/projectcollected 1 item                                                               test_calculator.py .                                                      [100%]============================== 1 passed in 0.01s ===============================

從上面的輸出中,我們可以看到測試會話開始并顯示了平臺信息,然后顯示了一個進度條,最后顯示了測試結果。在這種情況下,一個測試通過,沒有任何錯誤或失敗。qJd28資訊網——每日最新資訊28at.com

步驟4:使用更多的斷言

在步驟2中的示例中,我們只使用了一個簡單的assert語句來斷言測試結果。然而,pytest提供了許多其他有用的斷言函數,讓我們可以編寫更復雜的斷言邏輯。qJd28資訊網——每日最新資訊28at.com

例如,我們可以使用assert語句來檢查值是否相等、不相等、大于、小于等等。此外,pytest還提供了許多其他的斷言函數,如assert_raises()用于檢查異常,assert_in()用于檢查元素是否在集合中等等。qJd28資訊網——每日最新資訊28at.com

以下是一些常用的斷言函數示例:qJd28資訊網——每日最新資訊28at.com

def test_assertions():    assert 5 == 5  # 檢查相等    assert 10 != 5  # 檢查不相等    assert 3 < 10  # 檢查小于    assert 20 > 10  # 檢查大于    assert 5 <= 5  # 檢查小于等于    assert 10 >= 5  # 檢查大于等于    assert_raises(ValueError, int, 'string')  # 檢查是否引發特定異常    assert 'hello' in 'hello world'  # 檢查子字符串是否在字符串中    assert_in(3, [1, 2, 3, 4, 5])  # 檢查元素是否在列表中

步驟5:測試夾具(Fixtures)

測試夾具是pytest中非常強大且常用的概念。它們提供了一種方便的方式來準備測試環境、共享測試數據和執行重復的操作。qJd28資訊網——每日最新資訊28at.com

在pytest中,使用@pytest.fixture裝飾器來定義測試夾具。然后,在測試函數中通過參數來使用這些夾具。qJd28資訊網——每日最新資訊28at.com

以下是一個簡單的夾具示例:qJd28資訊網——每日最新資訊28at.com

import pytest@pytest.fixturedef setup():    # 在測試之前的準備工作    data = [1, 2, 3, 4, 5]    return datadef test_fixture_example(setup):    # 使用setup夾具    assert len(setup) == 5    assert 3 in setup

在上面的示例中,我們定義了一個名為setup的夾具。該夾具返回一個包含5個元素的列表。然后,我們在test_fixture_example()測試函數中使用了這個夾具,并編寫了一些斷言來驗證夾具的功能。qJd28資訊網——每日最新資訊28at.com

步驟6:使用參數化測試

參數化測試是pytest的另一個強大功能。它允許您以一種簡潔的方式運行多個測試用例,只需在測試函數上應用一個裝飾器。qJd28資訊網——每日最新資訊28at.com

使用@pytest.mark.parametrize裝飾器,您可以為測試函數提供一個或多個參數組合,并定義每個參數的值。qJd28資訊網——每日最新資訊28at.com

以下是一個參數化測試的示例:qJd28資訊網——每日最新資訊28at.com

import pytestdef add(a, b):    return a + b@pytest.mark.parametrize('a, b, expected', [    (2, 3, 5),    (4, 5, 9),    (-1, 1, 0),])def test_addition(a, b, expected):    result = add(a, b)    assert result == expected

在上面的示例中,我們使用@pytest.mark.parametrize裝飾器為test_addition()測試函數提供了三個參數組合。每個參數組合都包含兩個輸入參數a和b,以及預期結果expected。pytest將自動為每個參數組合運行測試,并使用斷言驗證結果。qJd28資訊網——每日最新資訊28at.com

步驟7:其他pytest功能

除了上述步驟中提到的功能外,pytest還提供了許多其他強大的功能和插件,以幫助您更好地編寫和組織測試代碼。qJd28資訊網——每日最新資訊28at.com

  • 標記(Markers):您可以使用標記來選擇性地運行測試集合,例如只運行特定的標記測試。
  • 測試跳過和跳過失敗:您可以使用@pytest.mark.skip裝飾器來跳過某些測試,以及使用@pytest.mark.xfail裝飾器來標記預期失敗的測試。
  • 測試覆蓋率:pytest可以與覆蓋率工具集成,以幫助您評估代碼的測試覆蓋率。
  • 測試重試:有時測試可能會因為外部因素而失敗,例如網絡故障。pytest可以通過使用@pytest.mark.flaky裝飾器來自動重試測試,以提高穩定性。

這只是pytest的一小部分功能,它還有許多其他功能可以探索和學習。通過閱讀pytest的官方文檔和參考資料,您可以進一步了解這些功能并在實際項目中應用它們。qJd28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17794-0.html從小白到測試專家:掌握Pytest的實用技巧和優秀實踐

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 想要微信小程序+Uniapp?XBoot開源項目助你快速開發!

下一篇: 從入門到精通:Python中SQLite數據庫的實戰指南!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 沙河市| 吉林市| 邳州市| 灵丘县| 葫芦岛市| 曲阜市| 深泽县| 阳山县| 兴城市| 长春市| 深水埗区| 抚宁县| 石狮市| 神农架林区| 新闻| 方山县| 栾川县| 韶山市| 治县。| 崇左市| 花垣县| 海丰县| 沙坪坝区| 赫章县| 万宁市| 平果县| 砀山县| 博白县| 望奎县| 若羌县| 石嘴山市| 理塘县| 南华县| 祁阳县| 石家庄市| 黎平县| 乡城县| 禄劝| 河源市| 利津县| 论坛|