本文為霍格沃茲測試開發學社學員筆記分享
原文連結:pytest運作用例、指令行常用參數、python執行pytest、異常處理L2 - 學習筆記 - 測試人社群
1、pytest 運作用例
運作用例
運作多條用例
- 運作 某個/多個 用例包
- 運作 某個/多個 用例子產品
- 運作 某個/多個 用例類
- 運作 某個/多個 用例方法
運作多條用例方式
- 執行包下所有的用例:pytest/py.test [包名]
- 執行單獨一個 pytest 子產品:pytest 檔案名.py
- 運作某個子產品裡面某個類:pytest 檔案名.py::類名
- 運作某個子產品裡面某個類裡面的方法:pytest 檔案名.py::類名::方法名
pytest 執行目前目錄及子目錄下所有符合條件的測試用例
執行單獨一個 pytest 子產品
執行某個類,加-v展示具體執行的哪個
運作結果分析
- 常用的:fail/error/pass
- 特殊的結果:warning/deselect(後面會講)
2、pytest 測試用例排程與運作
指令行參數-使用緩存狀态
- --lf(--last-failed) 隻重新運作故障。
- --ff(--failed-first) 先運作故障然後再運作其餘的測試
隻運作上次失敗的用例,如果上次沒有失敗的就全部運作
失敗的在中間
先執行失敗的,在執行其他的
3、常用指令行參數
指令行參數 - 常用指令行參數
—help
-x 用例一旦失敗(fail/error),就立刻停止執行
--maxfail=num 用例達到
-m 标記用例
-k 執行包含某個關鍵字的測試用例
-v 列印詳細日志
-s 列印輸出日志(一般-vs一塊兒使用)
—collect-only(測試平台,pytest 自動導入功能 )
有失敗的,其他不執行就加-x
發現失敗的就停止執行了,第二條失敗了,後面都不執行了
最多可以有幾個錯誤用例數,達到後就停止執行了
運作名字中包含str的用例
其他用例未被命中
隻收集不運作
4、python 執行 pytest
Python 代碼執行 pytest
- 使用 main 函數
- 使用 python -m pytest 調用 pytest(jenkins 持續內建用到)
Python 代碼執行 pytest - main 函數
if __name__ == '__main__':
# 1、運作目前目錄下所有符合規則的用例,包括子目錄(test_*.py 和 *_test.py)
pytest.main()
# 2、運作test_mark1.py::test_dkej子產品中的某一條用例
pytest.main(['test_mark1.py::test_dkej','-vs'])
# 3、運作某個 标簽
pytest.main(['test_mark1.py','-vs','-m','dkej'])
運作方式
`python test_*.py `
在main裡面設定完後,直接用python執行對應子產品,相當于在指令行中執行pytest
另一種執行方式,指令行中在pytest前面輸入python -m
5、pytest 異常處理
常用的異常處理方法
- try…except
- pytest.raises()
異常處理方法 try …except
try:
可能産生異常的代碼塊
except [ (Error1, Error2, ... ) [as e] ]:
處理異常的代碼塊1
except [ (Error3, Error4, ... ) [as e] ]:
處理異常的代碼塊2
except [Exception]:
處理其它異常
異常處理方法 pytest.raise()
- 可以捕獲特定的異常
- 擷取捕獲的異常的細節(異常類型,異常資訊)
- 發生異常,後面的代碼将不會被執行
pytest.raise() 用法
異常處理方法 pytest.raise()
def test_raise():
with pytest.raises(ValueError, match='must be 0 or None'):
raise ValueError("value must be 0 or None")
def test_raise1():
with pytest.raises(ValueError) as exc_info:
raise ValueError("value must be 42")
assert exc_info.type is ValueError
assert exc_info.value.args[0] == "value must be 42"