初學pytest——基礎知識

1,簡介:

pytest是python的一種單元測試框架,主要有以下幾個特點

  1. 簡單靈活,容易上手,文檔豐富
  2. 支持參數化,可以細粒度地控制要測試的測試用例
  3. 能夠支持簡單的單元測試和複雜的功能測試,還可以用來做selenium/appnium等自動化測試、接口自動化測試(pytest+requests)
  4. pytest具有很多第三方插件,並且可以自定義擴展,比較好用的如pytest-selenium(集成selenium)、pytest-html(完美html測試報告生成)、pytest-rerunfailures(失敗case重複執行)、pytest-xdist(多CPU分發)
  5. 測試用例的skip和xfail處理
  6. 可以很好的和CI工具結合,例如jenkins
  7. report框架–allure也支持了pytest

2,如何編寫pytest測試用例

編寫pytest測試用例按照下面規則:

測試文件以_test開頭或者以_test結尾
測試類以Test開頭,並且不能帶有__init__方法
測試函數以test_開頭
斷言使用基本的assert即可

3,幾個pytest命令參數:

 #用於顯示每個測試函數的執行結果,通過的話會打印出'PASSED'
pytest -v xxx.py

#用於顯示測試函數中print()函數輸出
pytest -s xxx.py

#通過@pytest.mark控制需要執行哪些feature的測試函數,例如測試函數test()前有修飾@pytest.mark.temp
pytest -m 'temp' xxx.py  #表示只執行測試函數test()
pytest -m 'not temp' xxx.py #表示除了測試函數test(),其他測試函數均執行

#只顯示整體測試結果
pytest -q xxx.py

#如果不要看警告可通過參數 --disable-pytest-warnings
pytest --disable-pytest-warnings xxx.py

#首先退出,在第一個錯誤或測試失敗時立即退出(exitfirst, exit instantly on first error or failed test)
pytest -x xxx.py

#幫助
pytest -h

4,測試用例執行狀態

測試用例執行完成後,每個測試用例都有自己的狀態,常見的狀態有:

passed:測試用例通過
error:斷言失敗
failed:用例本身代碼報錯(例如:fixture不存在,fixture裏有報錯)
xfail:預期失敗,加了@pytest.mark.xfail();代碼有異常,且和raised的異常類匹配,所以是xfail(算測試通過的一種,表示符合期望捕捉到的異常),並不算failed;如果和raised的異常類不匹配,則是failed

總結:
測試用例的代碼有異常,包括主動拋出異常或者代碼有異常,都算failed
當測試用例調用的fixture有異常,或傳入的參數有異常的時候,都算error
如果一份測試報告中,error的測試用例數量越多,說明測試用例質量越差

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章