Pytest框架運行方式(主函數、命令行、配置、執行順序)


一、pytest單元測試框架

(1)什么是單元測試框架

單元測試是指在軟件開發當中,針對軟件的最小單位(函數,方法)進行正確性的檢查測試。

(2)單元測試框架

java: junit 和testng

python: unittest 和 pytest

(3)單元測試框架主要做什么?

  1. 測試發現:從多個文件里面去找到我們測試用例

  2. 測試執行:按照一定的順序和規則去執行。並生成結果

  3. 測試判斷:通過斷言判斷預期結果和實際結果的差異

  4. 測試報告:統計測試進度,耗時,通過率,生成測試報告

二、單元測試框架和自動化測試框架有什么關系?

(1)什么是自動化測試框架

(2)作用

  1. 提高測試效率,降低維護成本

  2. 減少人工干預,提高測試的准確性,增加代碼的重用性

  3. 核心思想是讓不懂代碼的人也能夠通過這個框架去實現自動化測試

單元測試框架:只是自動化測試框架中的組成部分之一

pom設計模式:只是自動化測試框架中的組成部分之一

數據驅動

關鍵字驅動

全局配置文件的封裝

日志監控

selenium,request二次封裝

斷言

報告郵件

等等。。。。。

 

三、pytest簡介

  1. pytest是一個非常成熟的python的單元測試框架,比unittest更靈活,容易上手。

  2. pytest可能和selenium,requests,appium結合實現web自動化,接口自動化,app自動化

  3. pytest可以實現測試用例的跳過以及retuns失敗用例重試。

  4. pytest可以的allure生成非常完美的測試報告

  5. pytest可以和Jenkins持續集成。

  6. pytest有很多非常強大的插件,並且這些插件能夠實現很多的實用的操作

pytest
pytest-xdist    測試用例分布執行,多cpu分發
pytest-ordering  用於改變測試用例的執行順序
pytest-rerunfailures    用例失敗后重跑
pytest-html    生成html格式的自動化測試報告
allure-pytest    用於生成美觀的測試報告

 

將以上這些放到requirements.txt中,通過 pip install -r requirements.txt安裝
 

四、使用pytest,默認的測試用例的規則以及基礎應用

  1. 模塊名必須以test_開頭或者_test結尾

  2. 測試類必須以Test開頭,並且不能用init方法

  3. 測試方法必須以test開頭

 

五、pytest測試用例的運行方式

  1. 主函數模式

    (1)運行所有:pytest.main()

            (2)指定模塊:pytest.main(['-vs','test_login.py'])

            (3)指定目錄:pytest.main(['-vs','./interface_testcase'])

            (4)通過nodeid指定用例運行:nodeid由模塊名,分隔符,類名,方法名,函數名組成

pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func']) 
pytest.main('-vs','./interface_testcase/test_interface.py::Testinterface::test_03_zhiliao')

      2. 命令行模式:

        (1)運行所有:pytest

          (2)指定模塊:pytest -vs test_login.py

          (3)指定目錄:pytest -vs ./interface_testcase

          (4) 指定目錄: pytest -vs ./interface_testcase/test_interface.py::test_04_func 

參數詳解:

-s : 表示輸出調試信息,包括print打印的信息

-v: 顯示更詳細的信息

-vs : 這兩個參數可以一起用

-n : 支持多線程或者分布式運行測試用例

如pytest -vs ./testcase/test_login.py -n 2 (指兩個線程)

-reruns NUM :失敗用例重跑

-x : 表示只要一個用例報錯,那么測試停止

--maxfail=2 出現兩個用例失敗就停止

-k : 根據測試用例的部分字符串指定測試用例。

如:pytest -vs ./testcase -k "ao" (指只運行以關鍵字ao的用例)

--html ./report/report.html : 生成html的測試報告

 

3. 通過讀取pytest.init這個文件字是pytest單元測試框架的核心配置文件

(1)位置:一般放在項目的根目錄

(2)編碼:必須是ANSI,可以使用編輯器如notepad++修改編碼格式

(3)作用:改變pytest默認的行為

(4)運行的規則:不管是主函數的模式運行,命令行模式運行,都會去讀取這個配置文件

[pytest]
addopts = -vs      #命令行的參數,用空格分隔
testpaths = ./testcase      #測試用例的路徑
python_files = test_*py    #模塊名的規則
python_classes = Test*    #類名的規則
python_functions = test   #方法名的規則

 

六、pytest執行測試用例的順序是怎樣的呢?

unittest: ascll的大小來絕定執行的順序
pytest: 默認從上到下
改變默認的執行順序: 使用mark標記
@pytest.mark.run(order=3)

 

七、如果分組執行(冒煙,分模塊執行,分接口和web執行)

smoke: 冒煙用例,分布在各個模塊里面
pytest -m "smoke"
pytest -m "smoke or usermanager or prodectmanage"

八、pytest跳過測試用例

  1. 無條件跳過
@pytest.mark.skip(reason="就是要跳過你,沒原因")
         2.有條件跳過
@pytest.mark.skipif(age>=18,reason='已成年的跳過')

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM