天天看點

pytest 之 fixture 夾具

pytest 之 fixture 夾具(作用域)

一、unittest中的setup和teardown 在pytest中如何表示?

fixture 夾具與unittest中的setUp相似

使用方式:

@pytest.fixture()

yield相當于unittest中的tear_down 測試用例方法執行之後進行執行

第一種方式: 将夾具函數名稱作為參數傳遞到測試用例函數當中

pytest 之 fixture 夾具

第二種方式:

@pytest.mark.usefixtures(“夾具函數名稱”)

将夾具函數名稱以字元串的形式傳入@pytest.mark.usefixtures()中,可以傳多個值,可以直接放到類上面去,類下面的方法就可以不用寫了,但是這樣有一個局限性:不能接收傳回值,即如果fixtrue中有傳回值,就不采用@pytest.mark.usefixtures(“夾具函數名稱”)這個方法

pytest 之 fixture 夾具

yield和return比較相似

在夾具中的yield後面可以傳遞參數(想要傳回的值),半路return

函數遇到return就終止了,但是yield不一樣,執行完yield之後還可以繼續往下運作

在測試用例中可以接收yield中傳回的值,以指派的方式。

如下圖:

pytest 之 fixture 夾具

二、unittest中的setupclass在pytest如何表示?

用法和set_up是一樣的,隻需要在夾具fixture指定參數即可

pytest 之 fixture 夾具

根據情況指定不同的參數。如下所示:

function:方法

class:類

module:子產品

package:包(檔案夾)

session:表示隻要是運作了pytest,整個pytest過程隻會運作一次

pytest 之 fixture 夾具

三、fixtrue之autouse

fixtrue中有一個參數autouse,預設為false

設定為true,即為自動的意思,預設就會使用fixtrue

pytest 之 fixture 夾具

四、conftest

可以将夾具的這些東西都單獨存放到conftest.py中,(注意:conftest.py名字是固定的,隻能存放在項目的根目錄下),他會自動發現,用例子產品需要調用不需要導入子產品名,就可以直接進行使用。

最内層的conftest優先

pytest 之 fixture 夾具
pytest 之 fixture 夾具

繼續閱讀