国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python pytest進階之xunit fixture詳解

python pytest進階之xunit fixture詳解

2021-07-25 00:11linux超 Python

這篇文章主要介紹了python pytest進階之xunit fixture詳解,了解unittest的同學應該知道我們在初始化環境和銷毀工作時,unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來具體說明,需要的朋友可以參

前言

今天我們再說一下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級別

實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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'])

輸出結果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
functionLevel.py
--------------------
函數執行前所做的操作
--------------------
測試函數1
--------------------
函數執行后所做的操作
--------------------
--------------------
函數執行前所做的操作
--------------------
測試函數2
--------------------
函數執行后所做的操作
--------------------
[100%]
========================== 2 passed in 0.03 seconds ===========================

說明

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

method級別

實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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'])

輸出結果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
methodLevel.py
--------------------
方法執行前所做的操作
--------------------
測試方法1
--------------------
方法執行后所做的操作
--------------------
--------------------
方法執行前所做的操作
--------------------
測試方法2
--------------------
方法執行后所做的操作
--------------------
[100%]
========================== 2 passed in 0.03 seconds ===========================

說明

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

class級別

實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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'])

輸出結果

?
1
2
3
4
5
6
7
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級別

實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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'])

輸出結果

?
1
2
3
4
5
6
7
8
9
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個級別,實際工作中該如何使用還需多練習,深入理解才能得心應手!

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

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

原文鏈接:https://www.cnblogs.com/linuxchao/p/linuxchao-pytest-xunit-fixture.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品久久av | 日韩视频一区 | 亚洲黄色成人av | 视频一区在线播放 | 欧美xxxx黑人又粗又长 | 国产天堂网 | 国产精品久久久久久久福利院 | 成人日韩| 成人国产精品免费观看 | 日韩二区三区 | 欧美黑人xx | 欧美透逼| 亚洲欧美中文日韩在线 | 亚洲国产视频网 | 欧美资源在线 | 97人人看 | 6080yy午夜一二三区久久 | 久草久| 黄网站色 | 欧美视频二区 | 日本久久精品 | jyzz中国jizz十八岁免费 | 日韩成人不卡 | 欧美亚洲在线 | 日韩中文字幕 | 久久久久久免费精品 | 国产精品久久久久久久9999 | 日韩在线视频免费观看 | 亚洲欧美高清 | 日韩和的一区二在线 | 久久国产电影 | 天天射影院 | 精品国产乱码久久久久久密桃99 | 精品视频免费在线 | 这里只有精品在线播放 | 四虎小视频 | 粉色在线观看 | 九九热精品在线播放 | 欧美久久久网站 | 国产精品美女久久久久久久网站 | 日韩精品无码一区二区三区 |