pytest 前置後置 共享機制

2022-06-07 03:06:10 字數 2160 閱讀 3499

ddt 資料驅動測試  思想

應用場景:場景流程是一樣的,只有資料不一樣。 ---引數化

python測試框架當中應用資料驅動:

unittest: ddt庫

pytest: 自帶的。

在測試用例的前面加上:

@pytest.mark.parametrize(

"引數名

",列表資料)

引數名:用來接收每一項資料,並作為測試用例的引數。

列表資料:多組測試資料。

@pytest.mark.parametrize(

"引數1,引數2

",[(資料1,資料2),(資料1,資料2)])

示例: @pytest.mark.parametrize(

"a,b,c

",[(1,3,4),(10,35,45),(22.22,22.22,44.44)])

deftest_add(a,b,c):

res = a +b

assert res ==c

測試用例的: 前置操作(準備工作 - 準備環境/資料/資源...)、

後置操作(清理工作 -關閉環境/清理資料/釋放資源...)

前置工作 -setup

執行測試用例(中間執行多少用例呢?)

後置工作 -teardown

在每條測試用例執行之前,列印:一條測試用例開始執行

執行測試用例

在每條測試用例執行之後,列印:一條測試用例執行結束

在乙個測試類下的第一條用例執行之前,列印:測試類下的用例開始執行

執行測試類下的用例

在乙個測試類下的最後一條用例執行之前,列印:測試類下的用例執行結束

定義fixture

1、函式表示,函式名稱自定義。

2、函式前面,要用@pytest.fixture來宣告它是乙個fixture

3、包含前置準備工作的**、後置清理工作的**。前置**和後置**之間用yield隔開

yield之前的**為:前置工作

yield之後的**為:後置工作

4、作用域:function(測試函式-預設)、class

(測試類)、module(測試模組)、session(測試會話)

scope引數來設定

呼叫fixture

在測試類/測試用例的名字上:

@pytest.mark.usefixtures(

"定義的fixture函式名")

支援在測試類/測試用例上呼叫多個fixture

共享機制:

定義的fixture,不同的.py裡的測試用例,都可以呼叫。

公共的地方:conftest.py(存放fixtures)

不需要測試用例.py檔案去引入,pytest會自動找的。

(fixtures可以放在類裡面、 .py裡面、 conftest.py)

用例當中如果呼叫了fixture,

那麼,首先找自己所在的檔案有沒有

如果有,優先用自己的。

如果沒有,則會去找同級目錄下的conftest.py裡有沒有

如果同級沒有,則會去上找一級目錄下的conftest.py裡有沒有

...一直到rootdir

"繼承"fixture使用其它的fixture

@pytest.fixture(scope="

class")

defclass_fix():

#前置準備工作的**

print("

-----測試類下的用例開始執行------")

yield

#後置清理工作的**

print("

-----測試類下的用例執行結束------")

@pytest.fixture

defhello(class_fix):

#前置準備工作的**

print("

開啟瀏覽器,開啟**,登陸成功")

yield

#後置清理工作的**

print("

退出帳號,關閉瀏覽器")

執行順序:

class_fix的前置

hello的前置

hello的後置

class_fix的後置

fixture1(fixture2) --fixture2的scope不能低於fixture1

同級

pytest的前置後置

setup module teardown module 函式形式,前置動作 用例1 用例2 用例3 後置動作 setup function teardown function 函式形式,每個用例執行前後,都會執行前置後置,即前置動作 用例1 後置動作 前置動作 用例2 後置動作 setup cla...

pytest 之 fixture 的前置後置功能

一 fixture 之 conftest.py 檔案 二 建立 conftest.py 檔案,定義前置 後置 fixture 函式根據關鍵字 yield 作為前置和後置的分割線,並且 yield 也可以接收返回值,返回元祖,作用相當於return yield 譯 優特 分割線,返回前置結果 impo...

pytest執行測試前置和後置環境資訊處理

config 配置檔案目錄 report 測試報告目錄 allure allure測試報告 allure report assets tmp htmlcov 覆蓋率測試報告 run inte ce test 介面測試執行入口 service 封裝業務操作 api business common de...