Python單元測試框架之pytest -- fixtures


  fixtures不太好翻譯,可看作是夾心餅干最外層的兩片餅干。通常用setup/teardown來表示。它主要用來包裹測試用例,為什么需要這樣的餅干呢?我們以web自動化測試為例,例如,要測試的某系統需要登錄/退出。那么每一條用例執行前都需要登錄,執行完又都需要退出,這樣每條用例重復編寫登錄和退出就很麻煩,當然,你也可以把登錄和退出封裝為方法調用,但是每個用例中都寫調用也很麻煩。有了fixtures就變得簡便很多。

 

 

測試函數                                                                

創建test_fixtures.py文件

#coding=utf-8
import pytest # 功能函數
def multiply(a,b): return a * b # =====fixtures========
def setup_module(module): print ("\n") print ("setup_module================>") def teardown_module(module): print ("teardown_module=============>") def setup_function(function): print ("setup_function------>") def teardown_function(function): print ("teardown_function--->") # =====測試用例========
def test_numbers_3_4(): print 'test_numbers_3_4'
    assert multiply(3,4) == 12 


def test_strings_a_3(): print 'test_strings_a_3'
    assert multiply('a',3) == 'aaa' 

if __name__ == '__main__': pytest.main("-s test_fixtures.py")

 

運行結果:

============================= test session starts ============================= platform win32 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2 rootdir: D:\pyse\pytest, inifile: plugins: html collected 2 items test_fixtures.py setup_module================> setup_function------> test_numbers_3_4 .teardown_function---> setup_function------> test_strings_a_3 .teardown_function---> teardown_module=============>


========================== 2 passed in 0.01 seconds ===========================

通過執行結果,相信就很容易弄清楚它們的執行順序。

setup_module/teardown_module      在所有測試用例執行之后和之后執行。

setup_function/teardown_function    在每個測試用例之后和之后執行。

 

 

測試類                              

 

#coding=utf-8
import pytest # 功能函數
def multiply(a,b): return a * b class TestUM: # =====fixtures========

    def setup(self): print ("setup----->") def teardown(self): print ("teardown-->") def setup_class(cls): print ("\n") print ("setup_class=========>") def teardown_class(cls): print ("teardown_class=========>") def setup_method(self, method): print ("setup_method----->>") def teardown_method(self, method): print ("teardown_method-->>") # =====測試用例========

    def test_numbers_5_6(self): print 'test_numbers_5_6'
        assert multiply(5,6) == 30 

    def test_strings_b_2(self): print 'test_strings_b_2'
        assert multiply('b',2) == 'bb'

if __name__ == '__main__': pytest.main("-s test_fixtures.py")

 

運行結果:

============================= test session starts ============================= platform win32 -- Python 2.7.10 -- py-1.4.30 -- pytest-2.7.2 rootdir: D:\pyse\pytest, inifile: plugins: html collected 2 items test_fixtures.py setup_class=========> setup_method----->> setup-----> test_numbers_5_6 .teardown--> teardown_method-->> setup_method----->> setup-----> test_strings_b_2 .teardown--> teardown_method-->> teardown_class=========>


========================== 2 passed in 0.00 seconds ===========================

 

setup_class/teardown_class  在當前測試類的開始與結束執行。

setup/treadown                   在每個測試方法開始與結束執行。

setup_method/teardown_method     在每個測試方法開始與結束執行,與setup/treadown級別相同。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM