pytest跟我練03-->fixtrue基礎之scope參數


前言

      學習知識要善於舉例,舉例,再舉例。—— 藍寅
      好啦,雞湯結束,開始分享!!

一、scope參數是什么?

  • scope參數是fixture方法中的其中一個參數;
  • scope參數用來設置fixture的應用范圍,設置后,會根據設置的范圍去觸發執行;
  • scope參數有4個可選值:function(默認)、class、module、package/session

function:每個方法(函數)都會執行一次;
class:每個類都會執行一次。類中有多個方法調用,只在第一個方法調用時執行;
module:一個 .py 文件執行一次。一個.py 文件可能包含多個類和方法;
package/session:多個文件調用一次,可以跨 .py 文件。注意使用時單獨寫package或session

二、scope參數出處(會的忽略該步)

  • 2.1 編寫如下圖代碼,並按照操作:

  • 2.2 跳轉到fixture方法的位置時,就可以看到scope參數了,它有默認值function,英文好的朋友可以繼續看下面的注釋

三、scope參數簡單使用

  • 3.1 scope="function" 舉例
import pytest

@pytest.fixture(scope='function') # function級別每個函數都會執行一次
def setUp():
    print('\nsetUp')
    yield
    print('\ntearDown')

def testcase01(setUp):
    print('exectue testcase01')
    assert 1
def testcase02(setUp):
    print('exectue testcase02')
    assert 1

if __name__=='__main__':
    pytest.main(["-s"])

以上代碼執行結果:

/usr/local/bin/python3.8 /Users/lanyin/PycharmProjects/newdream/pytest_demo/test_demo_03.py
============================= test session starts ==============================
platform darwin -- Python 3.8.2, pytest-5.4.0, py-1.8.1, pluggy-0.13.1
rootdir: /Users/liuqingjun/PycharmProjects/newdream/pytest_demo
plugins: ordering-0.6, html-2.1.0, allure-pytest-2.8.11, metadata-1.8.0
collected 2 items

test_demo_03.py 
setUp
exectue testcase01
.
tearDown

setUp
exectue testcase02
.
tearDown

============================== 2 passed in 0.02s ===============================
  • 3.2 scope="module" 舉例
import pytest

@pytest.fixture(scope='module') # module級別每個模塊都會執行一次
def setUp():
    print('\nsetUp')
    yield
    print('\ntearDown')

def testcase01(setUp):
    print('exectue testcase01')
    assert 1
def testcase02(setUp):
    print('exectue testcase02')
    assert 1

if __name__=='__main__':
    pytest.main(["-s"])

以上代碼執行結果:

/usr/local/bin/python3.8 /Users/lanyin/PycharmProjects/newdream/pytest_demo/test_demo_03.py
============================= test session starts ==============================
platform darwin -- Python 3.8.2, pytest-5.4.0, py-1.8.1, pluggy-0.13.1
rootdir: /Users/liuqingjun/PycharmProjects/newdream/pytest_demo
plugins: ordering-0.6, html-2.1.0, allure-pytest-2.8.11, metadata-1.8.0
collected 2 items

test_demo_03.py 
setUp
exectue testcase01
.exectue testcase02
.
tearDown

============================== 2 passed in 0.02s ===============================

上述兩個實例小結:

  • scope="function" 在每個函數開始執行測試方法之前執行一次,每個測試方法部執行完之后再執行一次 (共2次輸出setUp、tearDown)
  • scope="module" 只會在模塊開始執行測試方法之前執行一次,測試方法全部執行完之后執行一次(共1次輸出setUp、tearDown)
  • "class"和"package/session"與上述用法原理一樣,不再重復舉例,傷大家眼睛


免責聲明!

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



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