欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python pytest進階之xunit fixture詳解

系統 1607 0

前言

今天我們再說一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同學應該知道我們在初始化環境和銷毀工作時,unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來具體說明。

先附上官方文檔的一段說明

1.每個級別的setup/teardown都可以多次復用

2.如果相應的初始化函數執行失敗或者被跳過則不會執行teardown方法

3.在pytest4.2之前,xunit fixture 不遵循fixture的作用規則的,因此可以在一個session級別且參數auto=True的fixture前執行setup_method方法

但是到目前為止,所有的xunit fixture已經遵循了fixture執行的規則

function級別

實例

            
 def setup_function(function):
 print('\n--------------------')
 print('函數執行前所做的操作')
print('\n--------------------')
 def teardown_function(function):
print('\n--------------------')
 print('函數執行后所做的操作')
print('\n--------------------')
def test_function_1():
print('\n測試函數1')
def test_function_2():
 print('\n測試函數2')
if __name__ == '__main__':
import pytest
pytest.main(['-sq', 'functionLevel.py'])
          

輸出結果

            
functionLevel.py 
--------------------
函數執行前所做的操作
--------------------
測試函數1
--------------------
函數執行后所做的操作
--------------------
--------------------
函數執行前所做的操作
--------------------
測試函數2
--------------------
函數執行后所做的操作
--------------------
[100%]
========================== 2 passed in 0.03 seconds ===========================
          

說明

通過輸出結果我們可以總結:setup_function會在每一個測試函數前執行初始化操作;teardown_function會在每一個測試函數執行后執行銷毀工作

method級別

實例

            
 class TestMethod(object):
 def setup_method(self, method):
 print('\n--------------------')
 print('方法執行前所做的操作')
 print('\n--------------------')
 def teardown_method(self, method):
 print('\n--------------------')
print('方法執行后所做的操作')
print('\n--------------------')
def test_method_1(self):
print('\n測試方法1')
def test_method_2(self):
print('\n測試方法2')
if __name__ == '__main__':
import pytest
pytest.main(['-sq', 'methodLevel.py'])
          

輸出結果

            
methodLevel.py 
--------------------
方法執行前所做的操作
--------------------
測試方法1
--------------------
方法執行后所做的操作
--------------------
--------------------
方法執行前所做的操作
--------------------
測試方法2
--------------------
方法執行后所做的操作
--------------------
[100%]
========================== 2 passed in 0.03 seconds ===========================
          

說明

通過輸出結果我們可以總結:setup_method會在每一個測試方法前執行初始化操作;teardown_method會在每一個測試方法執行后執行銷毀工作,且方法級別的fixture是作用在測試類中的方法上的

class級別

實例

            
 class TestClass(object): 
 @classmethod
 def setup_class(cls):
 print('\nsetup_class() for {}'.format(cls.__name__)) 
 @classmethod
def teardown_class(cls):
 print('\nteardown_class() for {}'.format(cls.__name__))
def test_1(self):
 print('self.test_1()')
def test_2(self):
print('self.test_2()')
if __name__ == '__main__':
import pytest
 pytest.main(['-sq', 'classLevel.py'])
          

輸出結果

            
classLevel.py 
setup_class() for TestClass
.self.test_1()
.self.test_2()
teardown_class() for TestClass
[100%]
========================== 2 passed in 0.06 seconds ===========================
          

說明

通過輸出結果我們可以總結:setup_class會在測試類執行前執行一次初始化操作;teardown_class會在測試類執行后執行一次銷毀工作,且class級別的fixture需要使用@classmethod裝飾

module級別

實例

            
def setup_module(module):
 print('\nsetup_module() for {}'.format(module.__name__))
def teardown_module(module):
 print('\nteardown_module() for {}'.format(module.__name__))
def test_1():
 print('test_1()') 
def test_2():
print('test_2()')
class TestClass(object):
def test_3(self):
print('self.test_3()')
def test_4(self):
print('self.test_4()')
if __name__ == '__main__':
 import pytest
pytest.main(['-sq', 'moduleLevel.py'])
          

輸出結果

            
moduleLevel.py 
setup_module() for moduleLevel
.test_1()
.test_2()
.self.test_3()
.self.test_4()
teardown_module() for moduleLevel
[100%]
========================== 4 passed in 0.04 seconds ===========================
          

說明

通過輸出結果我們可以總結:setup_module會在整個測試文件也就是模塊中的測試類或者測試函數,測試方法執行前執行一次初始化操作;teardown_module會在整個測試文件也就是模塊中的測試類或者測試函數,方法執行后執行一次銷毀工作

以上就是xunit fixture的4個級別,實際工作中該如何使用還需多練習,深入理解才能得心應手!

附上官方文檔做參考雖是英文但是很詳細

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 求av网站 | 亚洲91在线 | 欧美日韩成人网 | 久草新在线观看 | 毛片a片| 亚洲经典三级 | 草草视频免费观看 | 酒色婷婷 | 一级毛片免费观看不卡视频 | 91五月天 | 日本黄视色视频在线观看 | 国产在线观看一区二区三区 | 欧美成人h版在线观看 | 亚洲人成在线播放 | 狠狠综合久久av一区二区小说 | 欧美aaaaaaaaa | 激情视频网站 | 国产在线看一区 | 日韩成人在线观看 | 精品伊人久久久大香线蕉欧美 | 奇米第四狠狠777高清秒播 | 91久久精品一区二区三区 | 日本高清午夜色wwwσ | 中文一区二区 | 美国一级毛片片aaa 香蕉视频在线观看免费 | 欧美一级特黄毛片免费 | 日本午夜视频 | 久久久91精品国产一区二区三区 | 久久成 | 午夜资源 | 国产三级在线精品男人的天堂 | 99精品一区二区免费视频 | 毛片24种姿势无遮无栏 | 91欧美精品激情在线观看 | 一级特黄aaa免费 | 欧美图片激情小说 | 欧美激情久久欧美激情 | 艹艹艹逼| 日韩在线观看视频免费 | 久久精品草 | 日韩系列 |