pytest測試框架實戰一


目錄

 

 

 

參考鏈接

https://docs.pytest.org/en/stable/ 3

注意

起名字,類,包或者方法,都最好不要起關鍵字的名字,比如 os,sys, http , appium, selenium

自動化測試用例的設計基本原則

  1. 1.一個用例為一個完整的場景,從用戶登錄系統到 最終退出並關閉瀏覽器

    2.一個用例只驗證一個功能點,不要試圖在用戶登錄系統后把所有功能都驗證一遍

    3.盡可能少的編寫逆向邏輯用例。一方面因為逆向邏輯的用力很多(例如,手機號輸錯有幾十種情況),另一個方面自動化腳本本身比較脆弱,復雜的逆向邏輯用例實現起來比較麻煩且容易出錯。

    4.用例與用例之間盡量避免產生依賴

    5.一條用例完成測試之后需要對測試場景進行還原,以免影響其他用例的執行

pytest介紹

pytest測試用例的識別、運行

pytest 框架結構

  • import pytest 類似的setup,teardown同樣更靈活,
  • 模塊級(setup_module/teardown_module)模塊始末,全局的( 優先最高 )
  • 函數級(setup_function/teardown_function)只對函數用例生效(不在類中)
  • 類級(setup_class/teardown_class)只在類中前后運行一次(在類中)
  • 方法級(setup_method/teardown_methond)開始於方法始末(在類中)
  • 類里面的(setup/teardown)運行在調用方法的前后

Pytest 常用參數解析

pytest/py.test [包名] 執行包下所有的用例
pytest -v 打印詳細運行日志信息
pytest -s s是帶控制台輸出結果,也是輸出詳細
pytest -k "add” 匹配所有名稱中包含add的用例,可以使用 and ,or , not等邏輯運算
pytest -m [標記名] @pytest.mark.[標記名] 將運行有這個標記的測試用例
pytest -x 文件名 一旦運行到報錯就停止 運行
pytest - -maxfail=[num] 當運行錯誤達到num的時候就停止 運行
pytest 文件名.py 執行單獨一個pytest模塊
pytest 文件名.py::類名 運行某個模塊里面某個類
pytest 文件名.py::類名::方法名 運行某個模塊里面某個類里面的方法
pytest  --collect-only 給定配置下顯示那些用例會運行只收集用例,而不執行

@pytest.mark.xfail

@pytest.mark.skipif(1 == 2, reason='skip賦值給變量,可多處調用')

pytest --junitxml=path 生成執行結果xml文件

pytest 包名執行某個包 

pytest --junitxml="./default"
pytest --setup-show 回溯fixture的執行過程

Pytest fixture 用法

fixture 用法

  • Fixture 是為了測試⽤例的執⾏,初始化⼀些數據和⽅法
    • 實現了 unittest ⾥面的 setUp, tearDown 功能,但⽐ setUp, tearDown 更靈活
    • 直接通過函數名字調⽤或usefixtures
    • 允許使用多個fixture
    • 使用 autouse,如果要返回值,需要傳fixture函數名
    • -setup-show 回溯 fixture 的執行過程

fixture 作用域

  • fixture 里面有一個參數 scope,通過 scope 可以控制 fixture 的作用范圍,根據作用范圍大小划分:session> module> class> function,具體作用范圍如下:
      • function 函數或者方法級別都會被調用
      • class 類級別調用一次
      • module 模塊級別調用一次
      • session 是多個文件調用一次(可以跨.py文件調用,每個.py文件就是module)

conftest.py 用法

  • conftest.py配置需要注意:
    • conftest.py文件名是不能換的
    • conftest.py與運行的用例要在同一個package下,並且有__init__.py文件
    • 不需要import導入conftest.py,pytest用例會自動查找
    • 所有同目錄測試文件運行前都會執行conftest.py文件
    • 全局的配置和前期工作都可以寫在這里,放在某個包下,就是這 個包數據共享的地方。
    • 如果不同層級的包下都有conftest.py文件,那么內層目錄的conftest.py文件中的方法會覆蓋外部的conftest.py文件中的方法(重名的方法)

Pytest 參數化與數據驅動

 

pytest 常用插件

課后作業: 1、補全計算器(加減乘除)的測試用例 2、使用數據驅動完成測試用例的自動生成 3、conftest.py中創建fixture 完成setup和teardown 4、在調用測試方法之前打印【開始計算】,在調用測試方法之后打印【計算結束】

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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