天天看點

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

本文為霍格沃茲測試開發學社學員筆記分享

原文連結:pytest運作用例、指令行常用參數、python執行pytest、異常處理L2 - 學習筆記 - 測試人社群

1、pytest 運作用例

運作用例

運作多條用例

  • 運作 某個/多個 用例包
  • 運作 某個/多個 用例子產品
  • 運作 某個/多個 用例類
  • 運作 某個/多個 用例方法

運作多條用例方式

  • 執行包下所有的用例:pytest/py.test [包名]
  • 執行單獨一個 pytest 子產品:pytest 檔案名.py
  • 運作某個子產品裡面某個類:pytest 檔案名.py::類名
  • 運作某個子產品裡面某個類裡面的方法:pytest 檔案名.py::類名::方法名
軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

pytest 執行目前目錄及子目錄下所有符合條件的測試用例

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

執行單獨一個 pytest 子產品

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

執行某個類,加-v展示具體執行的哪個

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

運作結果分析

  • 常用的:fail/error/pass
  • 特殊的結果:warning/deselect(後面會講)

2、pytest 測試用例排程與運作

指令行參數-使用緩存狀态

  • --lf(--last-failed) 隻重新運作故障。
  • --ff(--failed-first) 先運作故障然後再運作其餘的測試
軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

隻運作上次失敗的用例,如果上次沒有失敗的就全部運作

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

失敗的在中間

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

先執行失敗的,在執行其他的

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

3、常用指令行參數

指令行參數 - 常用指令行參數

—help 
-x   用例一旦失敗(fail/error),就立刻停止執行
--maxfail=num 用例達到
-m  标記用例
-k  執行包含某個關鍵字的測試用例
-v 列印詳細日志
-s 列印輸出日志(一般-vs一塊兒使用)
—collect-only(測試平台,pytest 自動導入功能 )           
軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

有失敗的,其他不執行就加-x

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

發現失敗的就停止執行了,第二條失敗了,後面都不執行了

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

最多可以有幾個錯誤用例數,達到後就停止執行了

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

運作名字中包含str的用例

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

其他用例未被命中

軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理
軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

隻收集不運作

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 `           
軟體測試丨Pytest-運作用例、常用參數、執行pytest、異常處理

在main裡面設定完後,直接用python執行對應子產品,相當于在指令行中執行pytest

軟體測試丨Pytest-運作用例、常用參數、執行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-運作用例、常用參數、執行pytest、異常處理

異常處理方法 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"