轉載 淺識pytest

作者:小程序猿工作日記 
原文:
https://blog.csdn.net/sinat_40297086/article/details/81566315 

作者:wanggaoxingH 
來源:CSDN 
原文:https://blog.csdn.net/wanggaoxingH/article/details/79525560 

 

版權聲明:本人轉載以上文章用於參考、學習、記錄,轉載請附上原博文鏈接!

 

pytest是python的第三方測試框架,是基於unittest的擴展框架,比unittest更簡潔,更高效。靈活性比較好。使用python的原生斷言,更易於我們理解。可以運行unittest和nose的測試用例,有很好的兼容性。插件豐富,比如flask插件,可以用於出錯重跑。還有xdist插件,可以用於設備並行執行。

執行原理:

首先在所在目錄下運行執行命令(比如pytest或者pytest –q下文介紹了其他特殊運行命令),
則會執行當前目錄及其子目錄下以test開頭或者以test結尾的py文件中test開頭的函數。

也就是說pytest會遞歸查找當前文件以及子文件夾下面所有的test_開頭的py文件或_test結尾的py文件,把其當作測試文件。pytest會收集文件中的函數和方法,當作測試用例。
 

--------一些有關pytest的地址------
蟲師:http://www.cnblogs.com/fnng/p/4765112.html
http://blog.sina.com.cn/s/blog_a7ace3d80102w9tx.html
劉春明:http://blog.csdn.net/liuchunming033/article/details/46501653

——————————用例編寫規範————————
在 pytest 中案例的最小單位是函數/類,只要按照一定的命名規範即可:
測試文件以test_開頭(以_test結尾也可以)
測試類以Test開頭,並且不能帶有 __init__ 方法
測試函數以test_開頭

---------爲什麼要用斷言-------
不管是功能測試,自動化測試,還是單元測試。一般都會預設一個正確的預期結果,
而在測試執行的過程中會得到一個實際的結果。測試的成功與否就是拿實際的結果與
預期的結果進行比較。這個比的過程實際就是斷言(assert)


---------pytest常用斷言,斷言方法的使用--------
相等關係:assert 1 == 1    還有:>=,<=,!=,<,>
包含關係:assert h in hell 還有:not in
布爾值:  assert 函數(參數)  比如:assert  素數(判斷是否素數的參數)
參考地址:http://www.tuicool.com/articles/yieEbaF


---------如何安裝pytest--------
>pip install - U pytest
安裝完成後,查看版本號
>py.test --version        # 查看pytest版本


---------pytest如何生成報告插件安裝---------
這需要安裝pytest的擴展--pytest-html。
> pip install pytest-html     # 通過pip安裝pytest-html
參考地址:http://www.cnblogs.com/fnng/p/4768239.html


--------失敗用例重複執行插件安裝--------
>pip install -U pytest-rerunfailures
參考地址:http://www.cnblogs.com/sparkling-ly/p/5650413.html


--------如何執行測試腳本-------
if __name__ == '__main__':
 
    pytest.main("d:/pyse/pytest/")  # 指定測試目錄
  
  --------pytest和allure-------
  allure能夠生成比HTMLTestRunner更完美的測試報告,但目前python3.0以上還無法使用
參考地址:https://testerhome.com/topics/7457


[email protected]()的功能--------
fixture是pytest特有的功能,它用pytest.fixture標識,定義在函數前面。在你編寫測試函數的時候,你可以將此函數名稱做爲傳入參數,pytest將會以依賴注入方式,將該函數的返回值作爲測試函數的傳入參數
fixture的作用域:function、module、session ,autouse=True使得函數將默認執行
fixture的存在使得我們在編寫測試函數的準備函數、銷燬函數或者多個條件的測試提供了更加靈活的選擇。py.test --fixtures 可以查看所有的fixtures,包含目錄下及子目錄下的conftest.py
參考地址:http://www.cnblogs.com/sparkling-ly/p/5708575.html
---------------銷燬函數addfinalizer------------
request.addfinalizer(要銷燬的函數名稱)

@pytest.mark.xfail

-------------@pytest。mark是什麼-----------
自定義一個mark,如下,然後 py.test -v -m webtest 只運行標記了webtest的函數, py.test -v -m "not webtest"  來運行未標記webtest的
import pytest
@pytest.mark.webtest
def test_send_http(): 
       pass # perform some webtest test for your app

-------拋出異常使用:with---------
def test_demo_exceptions():
with pytest.raises(ZeroDivisionError):
1 / 0
with pytest.raises(IndexError):
(5, 10, 15)[30]


------setup和teardown函數的使用------
# 本模塊所有案例之前執行一次;典型場景:造數據、初始化客戶端等
def setup_module(module):
print ("\nsetup_module ===>")


# 本模塊所有案例之後執行一次
def teardown_module(module):
     print ("\nteardown_module ===>")


# 每個測試函數前執行
def setup_function(function):
     print ("\nsetup_function ->")


# 每個測試函數後執行
def teardown_function(function):
print ("\nteardown_function ->")

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