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