Pytest使用介紹

2022-06-29 12:21:08 字數 2352 閱讀 7951

之前做介面自動化測試接觸的都是python+unittest+ requests+htmltestrunner,現在公司用的是pytest,趁週末的時間先整體熟悉下~

一、概述

pytest是乙個非常成熟的全功能的python測試框架,主要特點有以下幾點:

二、安裝

1、安裝:

pip install pytest
2、驗證安裝:

pytest --version
三、簡單使用說明

1、pytest框架約束

所有的單測檔名都需要滿足test_*.py格式或*_test.py格式。

在單測檔案中,測試類以test開頭,並且不能帶有 init 方法(注意:定義class時,需要以t開頭,不然pytest是不會去執行該class的)

在單測類中,可以包含乙個或多個test_開頭的函式

在執行pytest命令時,會自動從當前目錄及子目錄中尋找符合上述約束的測試函式來執行。

2、簡單示例下面是最簡單的乙個示例

下面我們以這個最簡單的例子來舉例

3、pytest執行方式

(1)測試函式模式,如上圖:

pytest.main(['

test_demo.py

'])

(2)命令列模式:pytest 檔案路徑/測試檔名

例如:

pytest pytest_demo.py
4、控制測試用例執行(1)在第n個用例執行失敗後,結束測試執行

pytest -x  pytest_demo.py                  # 第01次失敗,就停止測試

pytest --maxfail=2 pytest_demo.py # 出現2個失敗就終止測試

(2)指定測試模組

pytest pytest_demo.py
(3)指定測試目錄

pytest pytest_test/
(4)通過關鍵字表示式過濾執行

pytest -k "

not 3

" #執行的時候會跳過test_3,只執行test_1和test_2

(5)通過node id指定測試用例

node id由模組名、分隔符、類名、方法名、引數構成,舉例:

執行模組中的指定用例: 

pytest test_demo.py::test_1 #只執行test_1
因為上面的例子上沒有類,如果存在類的話指定的方法是一致的

(6)通過標記表示式執行

pytest -m slow # 這條命令會執行被裝飾器 @pytest.mark.slow 裝飾的所有測試用例
(7)通過包執行測試

pytest --pyargs pkg.testing # 這條命令會自動匯入包 pkg.testing,並使用該包所在的目錄,執行下面的用例。
5、多程序執行cases如果cases量比較大的話,執行的時間可能會很長,這時候就需要多程序來執行

安裝pytest-xdist:

pip install -u pytest-xdist
執行模式:

pytest test_demo.py -n num # 其中num填寫併發的程序數。
6、重試執行cases在做介面測試後,503或者網路波動,可能導致case執行失敗,此時可以通過重試執行case的方式來解決

安裝pytest-rerunfailures:

pip install -u pytest-rerunfailures
執行:

pytest test_se.py --reruns num # 其中num填寫重試的次數
7、如何顯示print內容在執行指令碼時,我們會通過print來除錯或者列印一些內容,加上-s就可以了。

pytest test_demo.py -s
另外,pytest的多種執行模式是可以疊加執行的,比如說,你想同時執行個程序,又想列印出print的內容。可以用:

pytest test_demo.py -s -n 3

pytest框架介紹

一 pytest介紹 pytest是python的一種單元測試框架,與python自帶的unittest測試框架類似,但是比unittest框架使用起來更簡潔,效率更高。它具有如下特點 1.非常容易上手,入門簡單,文件豐富,文件中有很多例項可以參考 2.能夠支援簡單的單元測試和複雜的功能測試 3.支...

Pytest安裝和介紹

pytest是python的一種單元測試框架,同自帶的unittest測試框架類似,相比於unittest框架使用起來更簡潔,效率更高。4.pytest執行的第乙個例子 file name test abc.py import pytest 引入pytest包 def test a test開頭的測...

Pytest簡單的例項介紹

引用 針對以上文章的webui自動化,編寫了對應的login api介面自動化 介面的呼叫方法 利用pytest.mark.parametrize裝飾器可以實現測試用例引數化 生成html報告 python m pytest html report add demo.html 生成報告 利用allu...