国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Pytest架構(gòu)之fixture詳細說明(三)

89542767 / 410人閱讀

  原文中詳細的講解了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條測試用例。

01.png

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

02.png

  綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/128731.html

相關(guān)文章

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

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

    89542767 評論0 收藏0
  • flask 單元測試 (一)

    框架選擇: 根據(jù) https://blog.zengrong.net/pos...得知: flask項目本身使用的是pytest nose是對標準庫unittest的封裝,現(xiàn)在比較流行,但文檔沒有pytest做的好,且近幾年一直處于維護狀態(tài)沒有更新。 Flask-Testing flask擴展 最終選擇:pytest pytest 特點: 非常容易上手,入門簡單,文檔豐富,文檔中有很多實...

    syoya 評論0 收藏0
  • python單元測試卷架構(gòu)pytest詳細介紹

      此篇文章詳細介紹了python的單元測試卷架構(gòu)pytest,原文中根據(jù)實例編碼推薦的十分詳盡。對大家學習培訓和工作具有很強的參照參考意義,需要的小伙伴可以必須  pytest是python語言表達中一個強悍的單元測試卷架構(gòu),用于管理方法和管理功能測試,可運用在單元測試卷、功能測試工作上?! nittest也是python語言表達中一個單元測試卷架構(gòu),可是作用比較有限,沒有pytest靈便。 ...

    89542767 評論0 收藏0
  • 帶你深入理解自動化測試框架Pytest的配置文件!

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

    wayneli 評論0 收藏0
  • pytest插件探索——hook workflow

    摘要:會調(diào)用向打印一些環(huán)境信息,比如插件版本,版本,操作平臺這些等。在執(zhí)行之后調(diào)用執(zhí)行的過程是否執(zhí)行取決于是否需要創(chuàng)建執(zhí)行的過程如果有。所有測試執(zhí)行完畢之后,返回之前的階段。結(jié)束以后,整個退出之前的階段。 pytest插件開發(fā)需要熟悉一些常用的hook函數(shù),官方對于這些hook有一份簡略的文檔(目前除了小部分hook目前缺乏文檔外,見這個issue),但是各個hook的調(diào)用邏輯沒有一個直觀的...

    pubdreamcc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<