原文中詳細的講解了Pytest架構之fixture,原文中根據實例編碼推薦的十分詳盡。對大家學習培訓和工作具有很強的參閱參考意義,需用的小伙伴可以參考一下
原文中有關fixture的具體內容如下所示:
1、參數化設計fixture
2、fixture工廠
3、request這一fixture
1、參數化設計fixture
fixture有個params主要參數,容許大家傳送數據。
詞法文件格式:
#conftest.py文件 #fixture的params參數 #取value1時,會把依賴此fixture的用例執行一遍。 #取value2時,會把依賴此fixture的用例執行一遍。 #取value3時,會把依賴此fixture的用例執行一遍。 #params有幾個參數,就會將依賴此fixture的用例執行幾遍。 pytest.fixture(params=[value1,value2,value3..]) def fix_name(): #do something
在我們需用數次調用fixture時,則可使用fixture的參數化設計作用。
但它不是高并發的,是串行通信實施的。
例如,實驗對象有很多種配備方法,那樣參數化設計能幫大家在多種多樣配備方法下實行功能測試。
下邊,以網頁頁面自動化技術為實例。
要求:要在google、firefox瀏覽器下實行功能測試,用被列開啟網頁搜索pytest。
1)先往conftest.py之中,界定fixture,并設定params=["google","firefox"]
#conftest.py #params設置為google和firefox pytest.fixture(params=["google","firefox"]) def browser_fix(request): if request.param=="google": driver=webdriver.Chrome() elif request.param=="firefox": driver=webdriver.Firefox() else: driver=None yield driver if driver: driver.quit()
2)在測試用例文件test_baidu_action.py中,編寫測試用例,并調用browser_fix
#test_baidu_action.py pytest.mark.usefixtures("browser_fix") def test_baidu(browser_fix): driver=browser_fix driver.get("https://www.baidu.com/") driver.find_element(By.ID,"kw").send_keys("pytest",Keys.ENTER) loc=(By.XPATH,'//h3') WebDriverWait(driver,10).until(EC.visibility_of_element_located(loc)) driver.find_element(*loc).click()
3)運行2)中的用例,會依次在google瀏覽器中執行完成,然后在firefox瀏覽器中執行完成。一共是2條測試用例。
2、fixture工廠
我們在1個功能測試之中,需用數次調用fixture時,就可以用fixture工廠
運用的是裝飾器的形式
在wixture內部,界定一個函數。fixture回來的是函數公式。
以下實例來自官方網站:
pytest.fixture def make_customer_record(): def _make_customer_record(name): return{"name":name,"orders":[]} return _make_customer_record #用例內部,多次調用了fixture. def test_customer_records(make_customer_record): customer_1=make_customer_record("Lisa")#第1次調用 customer_2=make_customer_record("Mike")#第2次調用 customer_3=make_customer_record("Meredith")#第3次調用 如果工廠創建的數據需要管理,那么fixtue可以如下處理: pytest.fixture def make_customer_record(): #管理工廠的數據。在前置中創建。在后置中銷毀 created_records=[] def _make_customer_record(name): record=models.Customer(name=name,orders=[]) #前置中添加數據 created_records.append(record) return record
yield _make_customer_record#返回內部函數 #銷毀數據 for record in created_records: record.destroy() #測試用例 def test_customer_records(make_customer_record): customer_1=make_customer_record("Lisa") customer_2=make_customer_record("Mike") customer_3=make_customer_record("Meredith")
3、request這一fixture
pytest內嵌的名為requests的fixture,基本功能:給予要求fixture的功能測試/測試類的數據的。
大家界定fixture以后,一般都是功能測試/測試類,來要求fixture。
而requestfixture便會紀錄功能測試/測試類有關信息。
requestfixture是根據FixtureRequest來完成的,有如下特性(例舉一部分)可以用:
request.param:獲得fixture的params變量值
request.scope:獲得fixture的修飾符
request.function:獲得調用fixture的功能測試函數名稱。假如fixture是函數公式級別修飾符。
request.cls:獲得功能測試是以哪一個測試類里收集到的。
request.module:獲得功能測試/測試類從哪個python模塊里收集到的。
request.config:從pytest的config文件之中,獲得與現階段要求相關的配置信息
更多請查閱官方網站:https://docs.pytest.org/en/stable/reference.html
即然requests是fixture,那我們界定的fixture,就能直接把requests做為函數調用再用。
下邊,以簡易實例來演試。
界定一個fixture,將requests做為主要參數。
import pytest pytest.fixture(params=[1,2]) def init(request): print("用例名稱:",request.function) print("fix參數",request.param) print("fix的作用域",request.scope) print("用例所在的類",request.cls) 定義一個測試類,直接請求名為init的fixture: pytest.mark.usefixtures("init") class TestABC: def test_hello(self): print("-------------------------")
執行結果如下:
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/128731.html
文章主要是詳細介紹了python+pytest接口自動化技術主要參數關系,主要參數關系,又叫插口關系,即插口之間產生參數聯絡或依靠,大量相關知識必須的小伙伴們可可以了解一下 序言 那么今天,小編想跟大伙兒來講講python+pytest接口自動化測試主要參數關系,小編那邊就不多說了廢話了,大家可以直接直入主題。 一、什么叫主要參數關系? 主要參數關系,又叫插口關系,即插口之間產生參數聯...
框架選擇: 根據 https://blog.zengrong.net/pos...得知: flask項目本身使用的是pytest nose是對標準庫unittest的封裝,現在比較流行,但文檔沒有pytest做的好,且近幾年一直處于維護狀態沒有更新。 Flask-Testing flask擴展 最終選擇:pytest pytest 特點: 非常容易上手,入門簡單,文檔豐富,文檔中有很多實...
此篇文章詳細介紹了python的單元測試卷架構pytest,原文中根據實例編碼推薦的十分詳盡。對大家學習培訓和工作具有很強的參照參考意義,需要的小伙伴可以必須 pytest是python語言表達中一個強悍的單元測試卷架構,用于管理方法和管理功能測試,可運用在單元測試卷、功能測試工作上。 unittest也是python語言表達中一個單元測試卷架構,可是作用比較有限,沒有pytest靈便。 ...
摘要:其中用到編程等,還需要花更多的精力去深入學習,當每項技能都能掌握到一定深度,才能稱為一個完整的知識體系。 都有哪些種類的配置文件 pytest.ini:pytes...
摘要:會調用向打印一些環境信息,比如插件版本,版本,操作平臺這些等。在執行之后調用執行的過程是否執行取決于是否需要創建執行的過程如果有。所有測試執行完畢之后,返回之前的階段。結束以后,整個退出之前的階段。 pytest插件開發需要熟悉一些常用的hook函數,官方對于這些hook有一份簡略的文檔(目前除了小部分hook目前缺乏文檔外,見這個issue),但是各個hook的調用邏輯沒有一個直觀的...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2039·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 833·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02