目錄
一、fixture函式的定義
二、fixture函式的呼叫
三、fixture函式的返回
四、conftest.py的使用
五、使用例項
把乙個函式定義為fixture很簡單,只需要在函式宣告之前加上「@pytest.fixture」,引數如下:
fixture(scope="function", params=none, autouse=false, ids=none, name=none)
scope:有四個級別引數 "function" (預設), "class", "module" or "session":
☆ session多個檔案呼叫一次,可以跨.py檔案呼叫
☆ module每個.py檔案呼叫一次
☆ class每個類呼叫一次
☆ function每個函式或方法都會呼叫
params: 乙個可選的引數列表,預設為none。當它不為none時,params裡面的每個值,fixture都會去呼叫執行一次,就像執行for迴圈一樣把params裡的值遍歷一次;
autouse: 當預設為false,就可以選擇另外兩種方式來呼叫fixture。當設定為true時,在乙個session內的所有的測試用例都會自動呼叫這個fixture;
ids: 每個字串id的列表,每個字串對應於params 這樣他們就是測試id的一部分。 如果沒有提供id它們將從params自動生成;
name: fixture的名稱,代表裝飾函式的名稱。
fixture函式定義完成之後,如果想在測試用例中呼叫它,呼叫方式有三種:
☆ 直接呼叫;
☆ 使用fixture呼叫,在測試用例前加上「@pytest.mark.usefixtures(「名」)」;
☆ 使用fixture的autouse引數來呼叫,將autose引數置為true,則該session下的所有用例都會自動呼叫它。
fixture可以返回乙個值、乙個元組、list或字典。
如果多個用例需要呼叫同乙個功能。我們可以將fixture寫入conftest.py 配置檔案裡實現資料共享,同時又方便統一管理這些公共的功能。
conftest.py配置需要注意以下幾點:
☆ conftest.py配置指令碼名稱是固定的,不能改名稱;
☆ conftest.py與執行的用例要在同乙個目錄下,並且有__init__.py檔案;
☆ 不需要import匯入 conftest.py,用例會自動查詢。
conftest.py以及test_fixture.py放在同一目錄下,test_fixture.py即為測試用例。
conftest.py內容如下:
import pytest
@pytest.fixture()
def user():
print("獲取使用者名稱")
a = "hillwill"
b = "wxt"
return (a,b)
test_fixture.py內容如下:
import pytest
def test_1(user):
user1 = user[0]
print("使用者名稱1:%s" % user1)
assert user1 == "hillwill"
def test_2(user):
user2 = user[1]
print("使用者名稱2:%s" % user2)
assert user1 == "wxt"
if __name__ == "__main__":
pytest.main(["-s", "test_fixture.py"])
測試框架 Pytest框架(一)
目錄 pytest的安裝與執行 安裝 執行執行方式及命令 ide中執行 命令列終端執行 生成報告 報告中的亂碼處理 檢查點 斷言 基於python語言的自動化常用的框架有三種,unittest pytest rf。前兩款更多的用於白盒單元測試,rf可以很好的做系統測試使用。安裝pytest pip ...
Pytest測試框架(一)
pip install u pytest 用下面的命令去檢查一下pytest是否成功安裝 pytest version this is pytest version 5.4.1 建立名為test 001.py的檔案,敲如下內容 def reverse string return string 1 d...
測試框架 Pytest框架二(初始化清除)
目錄 初始化和清除 模組級別 類級別方法級別 目錄級別 模組級別的初始化及清除 def setup module print n 初始化 模組 def teardown module print 清除 模組 class test rundemo0 類的初始化和清除 classmethod def s...