​fixtrue基礎之scope引數

新夢想IT發表於2022-08-05

 

一、 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 編寫如下圖程式碼,並按照操作:

![](https://img2020.cnblogs.com/blog/380431/202003/380431-20200316215325495-538117319.jpg)

+ 2.2 跳轉到fixture方法的位置時,就可以看到scope引數了,它有預設值function,英文好的朋友可以繼續看下面的註釋

![](https://img2020.cnblogs.com/blog/380431/202003/380431-20200316215618244-779488914.png)

 

三、 scope引數簡單使用

·  3.1 scope="function" 舉例

importpytest

@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 -- Python3.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

collected2items

 

test_demo_03.py 

setUp 

exectue testcase01 

tearDown 

setUp 

exectue testcase02 

tearDown

 ==============================2passedin0.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 -- Python3.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

collected2items

 

test_demo_03.py

setUp 

exectue testcase01 

.exectue testcase02 

.

tearDown

==============================2passedin0.02s ===============================

上述兩個例項小結:

·  scope="function" 在每個函式開始執行 測試方法 之前執行一次,每個測試方法部執行完之後再執行一次 (共 2次輸出setUp、tearDown)

·  scope="module" 只會在模組開始執行測試方法之前執行一次,測試方法全部執行完之後執行一次(共1次輸出setUp、tearDown)

·  "class"和"package/session"與上述用法原理一樣,不再重複舉例,傷大家眼睛

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2909232/,如需轉載,請註明出處,否則將追究法律責任。

相關文章