pytest 之 fixture 夾具(作用域)
一、unittest中的setup和teardown 在pytest中如何表示?
fixture 夾具與unittest中的setUp相似
使用方式:
@pytest.fixture()
yield相當于unittest中的tear_down 測試用例方法執行之後進行執行
第一種方式: 将夾具函數名稱作為參數傳遞到測試用例函數當中
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL1kkeOlXS65UeNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwMzM3UTMycTM1ATMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
第二種方式:
@pytest.mark.usefixtures(“夾具函數名稱”)
将夾具函數名稱以字元串的形式傳入@pytest.mark.usefixtures()中,可以傳多個值,可以直接放到類上面去,類下面的方法就可以不用寫了,但是這樣有一個局限性:不能接收傳回值,即如果fixtrue中有傳回值,就不采用@pytest.mark.usefixtures(“夾具函數名稱”)這個方法
yield和return比較相似
在夾具中的yield後面可以傳遞參數(想要傳回的值),半路return
函數遇到return就終止了,但是yield不一樣,執行完yield之後還可以繼續往下運作
在測試用例中可以接收yield中傳回的值,以指派的方式。
如下圖:
二、unittest中的setupclass在pytest如何表示?
用法和set_up是一樣的,隻需要在夾具fixture指定參數即可
根據情況指定不同的參數。如下所示:
function:方法
class:類
module:子產品
package:包(檔案夾)
session:表示隻要是運作了pytest,整個pytest過程隻會運作一次
三、fixtrue之autouse
fixtrue中有一個參數autouse,預設為false
設定為true,即為自動的意思,預設就會使用fixtrue
四、conftest
可以将夾具的這些東西都單獨存放到conftest.py中,(注意:conftest.py名字是固定的,隻能存放在項目的根目錄下),他會自動發現,用例子產品需要調用不需要導入子產品名,就可以直接進行使用。
最内層的conftest優先