pytest測試框架介紹(1)


1.pytest介紹

  • pytest是一個非常成熟的全功能的python測試框架
  • 簡單靈活,易上手
  • 支持參數化

         測試用例的skip和xfail,自動失敗重試等處理

  • 能夠支持簡單的單元測試和復雜的功能測試,還可以用來做selenium/appium等自動化測試、接口自動化測試(pytest+requests);
  • pytest並且具有很多第三方插件,並且可以自定義擴展,比較好用的比如pytest-allure(完美 html測試報告生成),pytest-xdist(多cpu分發)等;
  • 可以很好的和jenkins集成

單元框架類似與unitest,但是比unitest更加成熟

pytest文檔:https://docs.pytest.org/en/latest/contents.html

第三方庫:https://pypi.org/search/?q=pytest

2.pytest安裝與依賴

pip install -U pytest U表示升級

pip insetall pytest-sugar ( sugar可以對我們運行的過程界面進行美化)

pip install pytest-rerunfailures( rerunfailures可以重新運行執行出錯的測試用例)

pip install pytest-xdist( xdist多任務並發的執行測試用例)

pip install pytest-assume( assume可以在測試用例里面添加斷言,通常是斷言出錯了就不執行了,但是通過用這個包,就可以即使這個斷言出錯了,也可以繼續執行下一個斷言)

pip install pytest-html( html可以生成html結果報告)

....

pip list 查看

pytest -h幫助

3.測試用例的識別與運行

  • 測試文件

    test_*.py

    *_test.py

  • 用例識別

    Test*類包含的所有test_*的方法(測試類不能帶有__init__方法)

    不在class中的所有的test_*方法

4.測試用例的識別與運行

終端執行

pytest/py.test

pytest -v   (最高級別信息--verbose)打印詳細運行日志信息

pytest -v -s 文件名   (s是帶控制台輸出結果,也是輸出詳細運行日志)

pytest 文件名.py     執行單獨一個pytest模塊 

pytest 文件名.py::類名    運行某個模塊里面的某個類

pytest 文件名.py::類名::方法名   運行某個模塊里面某個類里面的方法

pytest -v -k "類名and not方法名"  跳過運行某個測試用例

 

執行 pytest test_demo.py::Test_cal2,只運行test_sub 方法

執行 pytest test_demo.py::Test_cal::test_muti,只運行test_muti方法

執行 pytest test_demo.py -k "Test_cal and not test_muti" ,只運行test_demo.py中的非test_muti方法

 

pytest -m[標記名]   @pytest.mark.[標記名]將運行這個有標記的測試用例

pytest -x 文件名 一旦運行報錯就停止運行

pytest --maxfail=[num] 當運行錯誤達到num的時候就停止運行(比如冒煙測試,執行多少個失敗的用例就打回)

例如:執行pytest --maxfail=1 test_demo.py,就運行到一個錯誤停止運行了

5.pytest執行-失敗重新運行

場景:測試失敗后要重新運行n次,要在重新運行只見添加延遲時間,間隔n秒再運行。

安裝:pip install pytest-rerunfailures

執行:pytest --reruns 3 -v -s test_demo.py 

 pytest -v --reruns 3 --reruns-delay 1 test_demo.py (添加延遲時間1s)

6.pytest執行多條斷言有失敗也都運行

場景:一個方法中寫多條斷言,通常第一條過不去,下面就不執行了。我們想報錯也都執行一下。

安裝:

pip install pytest-assume

執行:

pytest.assume(1==4)

pytest.assume(2==4)

 

 6.pycharm中運行

 

三種運行方式:

 


免責聲明!

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



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