Pytest測試框架基礎--常用功能介紹


  本節主要系統介紹一下Pytest在自動化測試中常用的一些用法,自己編寫了一個自動化測試腳本,附在末尾

  一、斷言

  學過unittest的同學知道,也是有斷言方法的,但是pytest與其有點不同,更為簡單。

  判斷a是否與b相等  assert a==b

  判斷a是否存在b中 assert a in b

  判斷a與b不相等 assert a != b

 

  二、指定順序執行用例

  測試用例的執行順序是按照字母順序執行的,如果想指定其執行順序,可以使用order用法。

  首先需要安裝pytest-ordering庫,然后在測試用例上面調用pytest.mark.run(order=1),數字字母越小越先執行。

  @pytest.mark.run(order=1)

  def test_login_account_ok(self):

  self.driver.send_account('account')
  self.driver.send_password('pwd')
  self.driver.btn_click()
  time.sleep(1)
  assert self.driver.get_current_url() == 'http://ygc.com'

  三、參數化

  
在編寫測試用例時候,只有某一個值進行改變,可以將此值進行參數化,有多少個值執行多少次。
  如 百度搜索:selenium,自動化,123,空置

@pytest.mark.parametrize('search_word',['selenium','自動化','123',' '])
  def test_baidu(self,search_word):
    driver.find_element_by_id('kw').clear()
    driver.find_element_by_id('kw').send_keys(search_word)
    driver.find_element_by_id('su').click()

  

  備注:以上測試用例會執行4次,每次百度輸入框輸入的值分別為selenium,自動化,123,空;測試用例的參數必須要與parameterize里面的參數一致

  如果是需要傳入多個參數,比如登錄的用戶名,密碼 可以寫為:
 
@pytest.mark.parametrize('account,pwd',[('admin','123456'),('admin','111111'),('admin','')])
  
  def test_login(self,account,pwd):
    driver.find_element_by_id('account').clear()
    driver.find_element_by_id('account').send_keys(account)
    driver.find_element_by_id('pwd').clear()
    driver.find_element_by_id('pwd').send_keys(pwd)
    driver.find_element_by_id('su').click()

  
四、不執行某個測試用例

  
如果想要某個測試用例不執行,可以加上@pytest.mark.skip,這樣某個測試用例就會跳過執行。

  五、測試用例前后執行
  
在執行測試用例之前的預置條件以及執行完測試用例的后置條件,比如,在測試網站時候,通常需要先進行登錄,測試完之后退出登錄,關閉瀏覽器。
  setup/teardown
  def setup(def):
    print("before testing")

  def teardown(def):
    print("Finish testing")


  每執行一個測試用例,就會執行一次setup,teardown.比如有3個測試用例,那么對應的setup,teardown也會執行三遍。
  如果只想執行一遍,那么可以使用 setup_class,teardown_class,這樣只會在測試用例之前執行一次setup_class,所有測試用例執行完成后執行一次teardown_class

 
 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM