日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python單元測試框架pytest的使用示例

瀏覽:30日期:2022-07-09 09:17:47

首先祝大家國慶節日快樂,這個假期因為我老婆要考注會,我也跟著天天去圖書館學了幾天,學習的感覺還是非常不錯的,這是一篇總結。

這篇博客準備講解一下pytest測試框架,這個框架是當前最流行的python語言最流行的單測框架,不掌握可不行,首先這個框架屬于第三方模塊,需要通過pip安裝即可

pip install pytest

下面我們進入正題

一、介紹pytest的運行規則

1、測試文件的名稱必須要以test_*.py的格式,或者*_test.py的格式

2、測試類的名稱必須要以Test開頭,且這個類還不能有構造方法(__init__)

3、測試函數的名稱必須要以test開頭

pytest默認的就按照上面的三條規則來執行案例,當然我們可以自定義運行規則,這個我們后面在講,這個不重要,看一個最簡單的例子

import osimport pytest # pytest是python的單元測試框架 def func(x): return x + 1 def test_a(): print('____test_a____') assert func(2) == 5 def test_b(): print('____test_b____') assert func(2) == 3 if __name__ == ’__main__’: pytest.main(['-s','pytest1.py'])

二、介紹pytest的前置條件和后置條件,類似unittest的testfixture(測試固件)

如果同學們之前用過unittest測試框架,對測試固件這個這個名詞就不會陌生了,如果不清楚,可以看下之前我寫的unittest測試框架的博客(https://www.jb51.net/article/197004.htm)

pytest框架的測試固件有兩種,一種函數級別的,一種是類級別,執行的順序如下

a、執行類的前置條件

b、執行函數的前置條件

c、執行函數的后置條件

d、執行類的后置條件

使用也非常簡單,當時函數的命名一定要和我下面的備注保持完全一致

# pytest的前置和后置條件 # 1、函數級別 setup teardown# 運行于測試方法的開始和結束# 運行一個測試用例,會運行一次setup和teardown # 2、類級 setup_class teardown_class# 運行于測試類的開始和結束# 一個測試類只運行一次setup_class teardown_class

1、函數式的案例--函數級別的前置條件&后置條件

import osimport pytest def func(x): return x + 1 def test_a(): print('____test_a____') assert func(2) == 5 def test_b(): print('____test_b____') assert func(2) == 3 def setup(): print('函數級別的前置') def teardown(): print('函數級別的后置')

執行結果如下

python單元測試框架pytest的使用示例

2、類式的案例--函數級別的前置條件&后置條件

class Testclass: def test_a(self): print('____test_a____') assert func(2) == 5 def test_b(self): print('____test_b____') assert func(2) == 3 def setup(self): print('函數級別的前置') def teardown(self): print('函數級別的后置')if __name__ == ’__main__’: pytest.main(['-s','pytest2.py'])

執行結果如下

python單元測試框架pytest的使用示例

3、類級別的前置條件&后臺置條件

import pytest def func(x): return x + 1 class Testclass: def test_a(self): print('____test_a____') assert func(2) == 5 def test_b(self): print('____test_b____') assert func(2) == 3 def setup(self): print('函數級別的前置') def teardown(self): print('函數級別的后置') def setup_class(self): print('類級別的前置') def teardown_class(self): print('類級別的后置')if __name__ == ’__main__’: pytest.main(['-s','pytest3.py'])

結果如下

python單元測試框架pytest的使用示例

三、介紹如何修改pytest的配置文件

我們在博客的第一部分介紹了pytest框架的運行規則,這里我們可以修改pytest的配置文件,改變框架運行規則

首先我們要在案例的目錄下創建一個pytest.ini的配置文件

python單元測試框架pytest的使用示例

內容如下

# 創建pytest.ini文件# [pytest]# addopts=-s#這個先這樣寫,這個主要是執行參數 # testpaths = testcase# 只執行這個目錄下的文件## python_files = test_*.py#執行的文件的名字 # python_classes = Test_*#執行類的名字 # python_functions = test_*# 執行函數的名字

配置文件截圖

python單元測試框架pytest的使用示例

通過上面的步驟,我們就可以改變pytest的運行規則

四、介紹pytest的斷言

pytest的斷言是用python的斷言,他不像unittest框架,他自己實現了斷言

# -*- coding:utf-8 -*- # pytest是使用python自帶的斷言import pytest def func(x): return x + 1 def test_a(): print('____test_a____') assert func(2) == 5 def test_b(): print('____test_b____') assert not func(2) == 3 def test_c(): print('____test_b____') assert func(2) in ['a','b','c'] def test_d(): print('____test_b____') assert func(2) not in ['a','b','c'] if __name__ == ’__main__’: pytest.main(['-s','pytest5.py'])

五、介紹pytest的標記(mark)

1、可以實現給函數打標記,實現哪些標記執行,哪些標記不執行

一個函數可以打多個標記,一個標記同時可以給多個函數打標記。只需要讓這個標記的裝飾器函數裝飾我們的測試類或者測試函數

class Test_mark(): @pytest.mark.test01 def test_a(self): print('mark test a') @pytest.mark.test02 def test_b(self): print('mark test b') if __name__ == ’__main__’: pytest.main([’-s’,'pytest6.py'])

還有其它的執行方式

# pytest -m test01 # pytest -n 'test01 or test02' # pytest -m 'not test01'

2、標記可以實現不跳過某個、某些案例的作用

# -*- coding:utf-8 -*- import pytest # skip跳過執行某個案例@pytest.mark.skip(reson='只是這個函數用例不執行')def test_a(): print('testa') def test_b(): print('testb') @pytest.mark.skip(reson='整個類下的案例都不會執行')class Test_skip(): def test_a(self): print('testa') def test_b(self): print('testb') # 可以根據條件判斷,為真,則不執行@pytest.mark.skipif(1 > 2,reson='整個類下的案例滿足條件都不會執行')class Test_skipif(): def test_a(self): print('testa') def test_b(self): print('testb')

六、介紹pytest的數據參數化

1、傳入單個參數

# pytest的數據參數化 # 1、傳入單個參數## pytest.mark.parametrize(argnames,argvalues)# argnames 參數的名稱## argvalues 參數對應的值,類型必須是可迭代的類型,一般使用list @pytest.mark.skip(reson='只是這個函數用例不執行')def test_a(): print('testa') @pytest.mark.parametrize('name',['cui1','cui2','cui3','cui4'])def test_b(name): print('testb----->{name}'.format(name = name)) if __name__ == ’__main__’: pytest.main(['-s', 'pytest8.py'])

實現的效果name作為參數的名稱,這個案例會執行4次,參數分別是name=“cui1”name='cui2'....

python單元測試框架pytest的使用示例

2、傳入多個參數

import pytest # pytest的數據參數化 # 1、傳入多個參數## pytest.mark.parametrize((argnames1,argnames2),[(argvalues1,argvalues1),(argvalues1,argvalues1)],(argvalues1,argvalues1)]]) @pytest.mark.skip(reson='只是這個函數用例不執行')def test_a(): print('testa') @pytest.mark.parametrize(('name','age'),[('cui1',12),('cui2',13),('cui3',14)])def test_b(name,age): print('testb----->{name}----->{age}'.format(name = name,age = age)) if __name__ == ’__main__’: pytest.main(['-s', 'pytest9.py'])

實現的效果如下

python單元測試框架pytest的使用示例

七、介紹pyest的常用第三方插件

1、美化pytest的輸出報告插件

# pip install pytest-html # 用來美化輸出報告的插件# 只需要在配置文件中加這個配置即可## addopts=-s --html=report.html

效果

python單元測試框架pytest的使用示例

python單元測試框架pytest的使用示例

2、失敗案例重試插件,下面的示例實現的就是失敗重啟3,失敗后間隔2s在進行重試

# pip install pytest-rerunfailures# 失敗重試的第三方插件# 只需要在配置文件中加這個配置即# --reruns 3 --reruns-delay 2

至此,pytest的框架基本使用已經講解清楚,小伙伴們還有不清楚的嗎?歡迎大家來溝通!!!

到此這篇關于python單元測試框架pytest的使用示例的文章就介紹到這了,更多相關python單元測試框架pytest內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国语精品一区| 国产精品男女| 日韩亚洲精品在线观看| 国产精品成人a在线观看| 在线观看一区| 亚洲精品网址| 国产99久久| 日韩久久视频| 精品淫伦v久久水蜜桃| 日韩在线麻豆| 欧美手机在线| 四虎4545www国产精品| 国产日韩欧美三级| 中文字幕av一区二区三区四区| 久久麻豆精品| 在线视频观看日韩| 韩国久久久久久| 欧美激情视频一区二区三区在线播放| 丝袜美腿成人在线| 91久久久精品国产| 高清在线一区| 精品视频网站| 久久精品国产久精国产| 国产精品视频一区二区三区综合 | 日韩国产一区二| 亚洲丝袜啪啪| 亚洲深深色噜噜狠狠爱网站| 夜久久久久久| 婷婷综合亚洲| 免费日韩一区二区| 日本亚洲不卡| 国产精品密蕾丝视频下载| 亚洲精品伦理| 国产精品最新自拍| 97国产成人高清在线观看| 久久久夜精品| 国产h片在线观看| 91久久黄色| 国产乱子精品一区二区在线观看| 91精品国产自产在线丝袜啪| 国产麻豆精品久久| 日韩欧美网址| 精品在线99| 亚洲+小说+欧美+激情+另类| 久久一区视频| 女人av一区| 国产精品亚洲二区| 婷婷综合五月| 美女久久久久久| 久久影视一区| 日本aⅴ精品一区二区三区 | 日韩精品国产精品| 日韩高清不卡| 日韩精品中文字幕一区二区| 亚洲最新无码中文字幕久久| 91国语精品自产拍| 视频一区二区三区在线| 国产一区二区三区免费在线| 欧美三区四区| 欧美偷窥清纯综合图区| 国产在线看片免费视频在线观看| 婷婷精品在线| 欧美激情综合| 亚洲一区二区日韩| 久久香蕉国产| 成人在线黄色| 综合国产精品| 91精品高清| 国产亚洲一区二区手机在线观看| 日本天堂一区| 日本中文字幕不卡| 午夜欧美精品| 精品欧美激情在线观看| 国产欧美日韩影院| 狠狠爱成人网| 日韩理论片av| 国产精品密蕾丝视频下载| 成人精品天堂一区二区三区| 国产精品手机在线播放| 欧美日一区二区在线观看| 99香蕉国产精品偷在线观看 | 日韩福利一区| 国产一区二区精品久| 国产欧美激情| 国产精品一区2区3区| 久久国内精品| 国产精品欧美三级在线观看| 欧美一级二级视频| 国产精品极品| 国产人成精品一区二区三| 久久精品一区二区国产| 国产精品99精品一区二区三区∴| 日本va欧美va精品| 蜜臀久久久久久久| 蜜桃视频一区二区| 欧美日韩一区自拍| 美女尤物国产一区| 亚洲黄色中文字幕| 欧美午夜精品一区二区三区电影| 99精品综合| 美女国产一区| 欧美天堂一区二区| 狠狠躁少妇一区二区三区| 免费av一区| 日韩avvvv在线播放| 精品美女视频| 欧美粗暴jizz性欧美20| 日韩中文欧美在线| 中文字幕免费精品| 亚洲精品网址| 日韩二区三区在线观看| 欧美日韩一区自拍| 美女视频黄久久| 欧美a级片一区| 国产精品亚洲欧美一级在线| 日韩高清不卡在线| 久久久久国产精品一区二区| 美女精品久久| 亚洲黄色免费av| 91精品日本| 国产欧美啪啪| 成人精品高清在线视频| 日韩在线精品| 国产精品调教| 在线精品亚洲| 在线观看视频免费一区二区三区| 激情自拍一区| 最新亚洲一区| 99国产精品久久久久久久成人热 | 日韩一区二区三免费高清在线观看| 九九精品调教| 欧美亚洲tv| 中文字幕日韩欧美精品高清在线| 日本久久成人网| 欧美欧美黄在线二区| 天堂成人国产精品一区| 精品视频在线你懂得| 国产精品日本一区二区三区在线| 女人天堂亚洲aⅴ在线观看| 97精品国产福利一区二区三区| 国产精品视频一区二区三区 | 国产高潮在线| 国产一区二区三区天码| 国产福利一区二区精品秒拍| 天海翼精品一区二区三区| 天堂成人国产精品一区| 亚洲主播在线| 亚洲免费福利一区| 日韩精品电影一区亚洲| 午夜一区在线| 日本欧美在线看| 日韩高清一级| 国产精品色婷婷在线观看| 国产精品观看| 午夜久久中文| 天使萌一区二区三区免费观看| 亚洲资源网站| 国产精品免费大片| 在线亚洲人成| 亚洲深夜福利在线观看| 国产精品久久久久av蜜臀| 日韩av专区| 亚洲黄页一区| 妖精视频成人观看www| 免费看的黄色欧美网站| 视频在线观看国产精品| 欧美一区91| 在线成人直播| 国产极品嫩模在线观看91精品| 三上悠亚国产精品一区二区三区 | 欧美亚洲免费| 99视频精品全部免费在线视频| 日韩精品一二三区| 黄色在线网站噜噜噜| 狠狠干成人综合网| 国产精品久久久久久模特| 国产毛片精品| 国模 一区 二区 三区| 国产精品视频一区二区三区综合 | 一区二区国产精品| 精品一区二区三区免费看 | 成人啊v在线| 亚洲欧洲一区二区天堂久久| 久久久久国产| 久久天堂影院| 国产精品亚洲成在人线| 欧美性感美女一区二区| 国内精品亚洲| 久久久久伊人| 国产精久久一区二区| 五月亚洲婷婷 | 奶水喷射视频一区| 激情婷婷亚洲| 国产欧美另类| 国产精品久久久久77777丨| 日本在线视频一区二区| 男人天堂欧美日韩| 综合国产在线| 日韩精品亚洲专区| 国产乱码精品|