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