一、測試基礎補充:測試金字塔
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(不用)