您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“python中pytest進階之xunit fixture的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“python中pytest進階之xunit fixture的示例分析”這篇文章吧。
前言
先附上官方文檔的一段說明
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會在整個測試文件也就是模塊中的測試類或者測試函數,方法執行后執行一次銷毀工作
以上是“python中pytest進階之xunit fixture的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。