python之測試框架pytest(一)


一、測試基礎補充:測試金字塔

1、越接近底層速度越快效率越高,越接近頂層速度越慢效率越低
2、越接近底層成本越低,越接近頂層成本越高

二、單元測試框架

1、單元測試

a、組織代碼的單位(函數、類、模塊、包)

b、單元:對組織代碼的最小單元的測試,最小單元(函數、類的方法)

c、單元測試:對函數或者類下面的方法進行的測試

d、單元測試:開發自己做或者測試開發做;國內一般不做單元測試

2、框架

a、不使用框架也可以做自動化測試

1)使用if判斷

2)assert斷言:斷言成功不會輸出任何內容,斷言失敗會報AssertionError錯誤,異常處理

b、為什么要使用框架

1)手工

手工調用測試函數

手工去管理測試中斷

手工生成測試報告

2)什么是框架

框架就是需要解決手工的問題的

框架:提供各種各樣的工具和手段,輔助你提升效率,各種各樣的工具手段的集合,形成一套系統

需要遵循框架的規則

 

 

 3、python單元測試框架

1)unittest(python內置測試框架)

python內置的測試框架:使用的話需要學習好多基礎,和安裝的python兼容,穩定。

2)pytest(主流)

a、pytest的優點缺點

公司主流,功能極其強大,使用簡單,支持1000左右的插件(強大的插件系統),擴展性強
實現了測試用例里面的靈活篩選和管理(mark標記功能)
短處:需要安裝與python存在版本上兼容問題,不過目前pytest兼容的比較好

b、安裝:pip install pytest

c、測試用例編寫(pytest規則)

函數:必須以test開頭test_*,也可以以test結尾_test,但是建議以test開頭

模塊:必須以test開頭test_*.py,也可以以test結尾*_test.py,建議以test開頭

類:規范:以Test開頭命名Test*(可以不以Test開頭,但是為了規范還是以Test開頭)

d、收集測試用例、運行測試用例

a、一定要在指定目錄下運行pytest,如果想要運行哪個目錄下的test用例,需要進入該目錄運行pytest命令運行測試用例

b、運行某個模塊里的測試用例的三種方法

命令行下:pytest 模塊名.py

右鍵點擊"run pytest":(調試單個模塊的時候可以使用右擊)

  1、file-setting-搜索"pytest"-Tool(Python Integrated Tools)-Testing(Default testing runner)選擇pytest

  2、run->點擊run...->選擇pytest

使用程序入口run_test.py:

  該py文件是用來收集測試用例,運行測試用例

import pytest

if __name__ == '__main__':
  pytest.main()

c、pytest測試報告結構

第一部分:test session starts:測試用例失敗和通過的結果

首部分:運行環境、收集測試用例數量:collected 3 items,F(紅色):表示不通過,點(綠色):表示通過,測試進度

第二部分:FAILURES:失敗用例回溯信息,顯示失敗的原因

第三部分:Captured stdout call:輸出捕獲信息

1、(只有用例不通過的時候才會打印信息)
2、如果實在通過用例需要打印信息,那么在運行用例的時候,使用"-s"
pytest -s:強制打印信息

第四部分:short test summary info:總結信息

統計未通過的信息,成功通過的不會顯示

最后會有一個總結:多少用例失敗,多少用例未被選中,多少用例通過,用了多少時間

 

 

 

 

 

d、測試報告的輸出

1)安裝生成報告的插件:pip install pytest-report-me(有問題)
或者pip install pytest-html

2)輸出報告:pytest --report=output.html

或者 pytest --html=output.html

f、mark標記功能

對測試用例進行篩選和管理

1)在測試用例上添加裝飾器:@pytest.mark.標簽名

2)注冊標簽:建pytest.ini配置文件(項目的根目錄下),添加標簽(如果不注冊標簽會告警)

[pytest]
markers =
標簽1
標簽2
...

3)運行標簽標記的測試用例:pytest -m "標簽名"

 

3)nose(不用)


免責聲明!

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



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