pytest - Getting Start | Python 主題月

本文正在參加「Python主題月」,詳情查看 活動連接html

微信公衆號搜索【程序媛小莊】 - 沒有白走的路,每一步都算數node

前言

項目開發中有不少的功能,一般開發人員須要對本身編寫的代碼進行自測,除了藉助postman等工具進行測試外,還須要編寫單元測試對開發的代碼進行測試,經過單元測試來判斷代碼是否可以實現需求,本文介紹的pytest模塊是一個很是好用的框架,不只支持簡單的測試也支持應用中複雜的功能測試。python

pytest簡介

這裏引用pytest官方文檔中的內容:pytest is a mature full-featured Python testing tool that helps you write better programs.web

Getting start

pytest安裝

pytest的運行環境是:python3.6 3.7 3.8 3.9 pypy3.在命令行中運行下述命令安裝pytest微信

pip install pytest
複製代碼

安裝完成以後運行下述命令檢查是否安裝成功:markdown

pytest --version
pytest 6.2.4
複製代碼

第一個測試

能夠經過四行代碼爲一個函數建立簡單的測試。框架

# test.py
def func(x):
    return x+1


def test_answer():
    assert func(5) == 7
複製代碼

下面就能夠執行pytest命令來測試功能。函數

image-20210726105047982

100%是指運行全部測試用例的總體進度,完成以後,pytest會顯示一個失敗報告,指出具體錯誤緣由。pytest能夠指定文件進行測試,更多的時候pytest會運行當前目錄和子目錄中的全部test_*.py或者*_test.py形式的文件。工具

在類中進行多個測試

若是編寫了多個測試用例,能夠將多個測試用例放在同一個類中,可是須要確保類型的前綴是Test,不然將會被pytest跳過。oop

class TestDemo:

    def test_one(self):
        x = 'this'
        assert 'h' in x

    def test_two(self):
        x = 'hello'
        assert hasattr(x, 'check')
複製代碼

下面是使用pytest執行測試的結果,在類中編寫測試須要注意兩點:第一,類名必須有Test前綴,第二,在使用類進行測試時不須要實例化對象,pytest會自動找到test_前綴的方法執行。

image-20210726111914887

Usage and Invocations

Exit codes

不曉得有沒有細心的小夥伴發現沒有,在使用pycharm運行完成一段程序後,會顯示Process finished with exit code 0,表示程序正常運行完畢了,在運行pytest時也會出現exit code,而且可能會出現大概6種不一樣的exit code

exit code 0:全部的測試都已經收集而且成功經過

exit code 1:收集並運行了測試,可是有些測試失敗了

exit code 2:測試執行過程當中被打斷

exit code 3:執行測試時發生內部錯誤

exit code 4:pytest命令使用錯誤

exit code 5:沒有收集測試

終止測試

pytest運行時能夠經過命令控制在出現一個或者N個失敗信息時中止繼續測試。

pytest -x           # stop after first failure
pytest --maxfail=2  # stop after two failures
複製代碼

指定/選擇測試用例

pytest支持多種多方運行和選擇測試用例。

測試指定py文件pytest test_mod.py

測試指定目錄pytest /usr/local/testing/

經過節點id指定測試:每一個被收集的測試都會被分配一個惟一的nodeid,,由模塊名、類名、函數名等,每一個部分使用::分隔。

運行模塊中的指定的測試用例:pytest test_mod.py::test_func
運行類中的某個測試方法:pytest test_mod.py::TestClass::test_method

複製代碼

pytest選項

-r選項能夠用於在測試會話結束時顯示更加剪短的測試摘要信息,在大型的測試用例中能夠很是清晰的獲取全部失敗、跳過等信息。-r參數能夠和下面其餘選項結合使用,輸出不一樣的結果信息。

f:失敗的
E:錯誤的
s:跳過的
x:失敗的
p:經過的
複製代碼

如僅查看失敗和跳過的測試,能夠執行:pytest -rfs

結語

文章首發於微信公衆號程序媛小莊,同步於掘金

碼字不易,轉載請說明出處,走過路過的小夥伴們伸出可愛的小指頭點個贊再走吧(╹▽╹)

image.png

相關文章
相關標籤/搜索