成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Pytest架構(gòu)之fixture詳細(xì)說(shuō)明(三)

89542767 / 434人閱讀

  原文中詳細(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è)試用例。

01.png

  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é)果如下:

02.png

  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)?lái)幫助。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128731.html

相關(guān)文章

  • python+pytest接口自動(dòng)化主要參數(shù)關(guān)系

      文章主要是詳細(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)...

    89542767 評(píng)論0 收藏0
  • flask 單元測(cè)試 (一)

    框架選擇: 根據(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í)...

    syoya 評(píng)論0 收藏0
  • python單元測(cè)試卷架構(gòu)pytest詳細(xì)介紹

      此篇文章詳細(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靈便?!?..

    89542767 評(píng)論0 收藏0
  • 帶你深入理解自動(dòng)化測(cè)試框架Pytest的配置文件!

    摘要:其中用到編程等,還需要花更多的精力去深入學(xué)習(xí),當(dāng)每項(xiàng)技能都能掌握到一定深度,才能稱為一個(gè)完整的知識(shí)體系。 都有哪些種類的配置文件 pytest.ini:pytes...

    wayneli 評(píng)論0 收藏0
  • pytest插件探索——hook workflow

    摘要:會(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è)直觀的...

    pubdreamcc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<