pytest 框架學習總結

視頻:pytest01-快速上手_嗶哩嗶哩_bilibili

資料:pytest 框架 - 白月黑羽

基于 Python 語言的自動化測試框架 最知名的 有如下 3 款unittest、pytest、robotframework

前兩款框架主要(或者說很大程度上)是 聚焦 在 白盒單元測試而 robotframework 主要聚焦在 系統測試。

pytest可以利用第三方插件,生成表報。

安裝:

安裝直接執行命令:pip install pytest

還需要產生測試報表,執行如下命令安裝:pip install pytest-html

快速上手:

測試用例代碼規格:我們編寫的測試用例代碼文件, 必須以?test_?開頭,或者以?_test?結尾

要求:類名(Class 類名)必須以Test為前綴,其中的類方法(def 類方法)必須以test為前綴。

pytest 中用例的檢查點 直接用 Python 的 assert 斷言。assert 后面的表達式結果 為 True ,就是 檢查點 通過,結果為False ,就是檢查點 不通過。和hytest中的check_point()方法不一樣。

執行:pytest? 或者pytest+對應目錄。直接執行?pytest?命令不會將當前目錄設置為模塊搜索路徑
所以更推薦 執行命令?python -m pytest 。

目前 項目根目錄 中 只有一個cases 目錄用例存放測試用例, 將來還會有其他目錄,比如:lib目錄存放庫代碼、cfg目錄存放配置數據 等等。為了防止 pytest 到其他目錄中找測試用例項,執行測試時,我們可以在命令行加上目標目錄 cases ,就是這樣:python -m pytest cases

產生報告:python -m pytest cases --html=report.html --self-contained-html

初始化清除:

對自動化測試框架來說,初始化清除功能 至關重要。

模塊級別模塊級別?的初始化、清除 分別 在整個模塊的測試用例 執行前后執行,并且?只會執行1次?。定義 setup_module 和 teardown_module 全局函數。和hytest中的名稱不一樣。

def setup_module():print('\n *** 初始化-模塊 ***')def teardown_module():print('\n ***   清除-模塊 ***')

類級別類級別?的初始化、清除 分別 在整個類的測試用例 執行前后執行,并且?只會執行1次。定義 setup_class 和 teardown_class 類方法。主要是用來為該??中的所有測試用例做?公共的?初始化 和 清除。

def setup_module():print('\n *** 初始化-模塊 ***')def teardown_module():print('\n ***   清除-模塊 ***')class Test_錯誤密碼:@classmethoddef setup_class(cls):print('\n === 初始化-類 ===')@classmethoddef teardown_class(cls):print('\n === 清除 - 類 ===')

方法級別:方法級別 的初始化、清除 分別 在類的 每個測試方法 執行前后執行,并且?每個用例分別執行1次定義 setup_method 和 teardown_method 實例方法

class Test_錯誤密碼:@classmethoddef setup_class(cls):print('\n === 初始化-類 ===')@classmethoddef teardown_class(cls):print('\n === 清除 - 類 ===')def setup_method(self):print('\n --- 初始化-方法  ---')def teardown_method(self):print('\n --- 清除  -方法 ---')

目錄級別:目標級別的 初始化清除,就是針對整個目錄執行的初始化、清除。需要在初始化的目錄下面創建 一個名為?conftest.py?的文件,里面內容如下所示

import pytest @pytest.fixture(scope='package',autouse=True)
def st_emptyEnv():print(f'\n#### 初始化-目錄甲')
//這里清除環境的代碼就是 yield 之后的代碼。 這是一個生成器yieldprint(f'\n#### 清除-目錄甲')

挑選用例執行:

指定一個模塊:python -m pytest cases\登錄\test_錯誤登錄.py
指定目錄:python -m pytest cases
指定模塊里面的函數或者類:python -m pytest cases\登錄\test_錯誤登錄.py::Test_錯誤密碼

根據名字:使用 命令行參數 -k 后面加名字來挑選要執行的測試項.
例如:python -m pytest -k C001001 -s

-k 后面的名字:可以是測試函數的名字,可以是類的名字,可以是模塊文件名,可以是目錄的名字;是大小寫敏感的;不一定要完整,只要能有部分匹配上就行;可以用 not 表示選擇名字中不包含。

根據標簽:需要先給標簽,然后再使用此方法-m。標簽也支持中文.

import pytestclass Test_錯誤密碼2:@pytest.mark.webtest    //或者@pytest.mark.網頁測試def test_C001021(self):print('\n用例C001021')assert 1 == 1

然后,可以這樣運行指定標簽的用例:python -m pytest cases -m webtest -s

Pytest 助手:

大佬開發的助手。看看即可。

實戰案例:

這樣執行命令

python -m pytest cases -sv

因為?-m?這種執行模塊的方式運行python, 會自動把當前工作目錄作為模塊搜索路徑,這樣就能避免Python解釋器 搜索不到 庫文件的問題?ModuleNotFoundError: No module named 'xxxx'

但是,實際上仍然會出現這種問題。如果以上方法沒能解決。可以嘗試使用:pip install pytest。

這樣就會在類方法旁邊形成一個可以運行的按鈕。直接點擊運行按鈕即可。

數據驅動:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73437.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Day16:最小的k個數

倉庫管理員以數組 stock 形式記錄商品庫存表,其中 stock[i] 表示對應商品庫存余量。請返回庫存余量最少的 cnt 個商品余量,返回 順序不限。 示例 1: 輸入:stock [2,5,7,4], cnt 1 輸出:[2]示例 2: 輸入…

【最后203篇系列】016 Q201架構思考

前言 Q200已經達到了我既定的目標,在最近的3個月,我需要進一步完善,達到可以試產的程度。 在這個過程當中,許多知識和體會一直在變。 qtv200到目前,雖然通過習慣(每晚運行離線策略和比對)方式維持了注意力的集中&…

音視頻入門基礎:RTP專題(20)——通過FFprobe顯示RTP流每個packet的信息

通過FFprobe命令: ffprobe -protocol_whitelist "file,rtp,udp" -of json -show_packets XXX.sdp 可以顯示SDP描述的RTP流每個packet(數據包)的信息: 對于RTP流,上述的“packet”(數據包&#…

信息系統運行管理員教程6--信息系統安全

信息系統運行管理員教程6–信息系統安全 第1節 信息系統安全概述 1.信息系統安全的概念 信息系統安全是指保障計算機及其相關設備、設施(含網絡)的安全,運行環境的安全,信息的安全,實現信息系統的正常運行。信息系統…

LLM后訓練:解鎖大型語言模型推理能力的關鍵路徑

引言:從語言生成到邏輯推理的躍遷 大型語言模型(LLMs)通過預訓練掌握了海量語言模式,但其核心缺陷——幻覺、邏輯斷裂、價值觀偏差——暴露了單純預訓練的局限性。后訓練(Post-Training)作為預訓練后的精修…

9.貪心算法

簡單貪心 1.P10452 貨倉選址 - 洛谷 #include<iostream> #include<algorithm> using namespace std;typedef long long LL; const int N 1e510; LL a[N]; LL n;int main() {cin>>n;for(int i 1;i < n;i)cin>>a[i];sort(a1,a1n);//排序 LL sum 0…

Linux 網絡:skb 數據管理

文章目錄 1. 前言2. skb 數據管理2.1 初始化2.2 數據的插入2.2.1 在頭部插入數據2.2.2 在尾部插入數據 2.2 數據的移除 3. 小結 1. 前言 限于作者能力水平&#xff0c;本文可能存在謬誤&#xff0c;因此而給讀者帶來的損失&#xff0c;作者不做任何承諾。 2. skb 數據管理 數…

批量給 Excel 添加或刪除密碼保護|Excel 批量設置打開密碼和只讀密碼

我們在將 Excel 文檔發送給第三方或者進行存檔的時候&#xff0c;對 Excel 文檔添加密碼保護是非常重要的一個操作。添加保護后的 Excel 文檔。就只能有相應權限的用戶才能夠打開或者編輯操作。尤其是當我們 Excel 文檔中內容非常敏感非常重要的時候&#xff0c;添加保護就顯得…

藍耘MaaS平臺:阿里QWQ應用拓展與調參實踐

摘要&#xff1a;本文深入探討了藍耘MaaS平臺與阿里QWQ模型的結合&#xff0c;從平臺架構、模型特點到應用拓展和調參實踐進行了全面分析。藍耘平臺憑借其強大的算力支持、彈性資源調度和全棧服務&#xff0c;為QWQ模型的高效部署提供了理想環境。通過細化語義描述、調整推理參…

使用 Docker 部署前端項目全攻略

文章目錄 1. Docker 基礎概念1.1 核心組件1.2 Docker 工作流程 2. 環境準備2.1 安裝 Docker2.2 驗證安裝 3. 項目配置3.1 項目結構3.2 創建 Dockerfile 4. 構建與運行4.1 構建鏡像4.2 運行容器4.3 訪問應用 5. 使用 Docker Compose5.1 創建 docker-compose.yml5.2 啟動服務5.3 …

Vue中使用到的padStart方法是什么

padStart() 是 JavaScript 字符串對象的一個方法&#xff0c;用于在字符串的開頭填充指定的字符&#xff0c;直到字符串達到指定的長度。這在需要對字符串進行格式化&#xff0c;使其保持固定長度時非常有用&#xff0c;比如在日期格式化時&#xff0c;確保月份、日期等為兩位數…

springboot集成flink實現DM數據庫同步到ES

前言 今天分享的其實是一個面試上機方案&#xff0c;就是監測DM數據庫數據&#xff0c;同步到ES&#xff0c;使用flink實現。基本套路&#xff0c;其實也沒啥好說的&#xff0c;非要說也就是&#xff0c;國家隊還是很多不跟你玩啊&#xff0c;雖然flink有阿里在背后&#xff0c…

springboot jackson 日期格式配置

一、JacksonProperties JacksonProperties是一個用ConfigurationProperties(prefix“spring.jackson”)注解修飾的類&#xff0c;所以可以通過以spring.jackson為前綴的配置去賦值。 JacksonAutoConfiguration會通過Jackson2ObjectMapperBuilderCustomizer實現類根據JacksonPr…

【藍橋杯】24省賽:數字串個數

思路 本質是組合數學問題&#xff1a; 9個數字組成10000位數字有9**10000可能 不包括3的可能8**10000 不包括7的可能8**10000 既不包括3也不包括77**10000 根據容斥原理&#xff1a;結果為 9 ? ? 10000 ? 8 ? ? 10000 ? 8 ? ? 10000 7 ? ? 10000 9**10000 - 8**10…

AGI大模型(7):提示詞應用

1 生成數據 LLM具有?成連貫?本的強?能?。使?有效的提示策略可以引導模型產?更好、更?致和更真實的響應。LLMs還可以特別有?地?成數據,這對于運?各種實驗和評估?常有?。例如,我們可以使?它來為情感分類器?成快速樣本,如下所示: 提示: ?成10個情感分析的范…

Unity開發中對象池設計與使用

一、設計目的 為了避免頻繁創建和銷毀對象&#xff08;例如 UI 元素、事件對象等&#xff09;帶來的內存分配和垃圾回收壓力&#xff0c;可以使用對象池來管理對象來提高游戲的性能&#xff0c;避免游戲卡頓。 二、代碼實現 public interface IRecycle {/// <summary>…

JVM并發編程AQSsync鎖ReentrantLock線程池ThreadLocal

并發編程2 synchronized鎖實現**AQS****ReentrantLock實現****JUC 常用類**池的概念 ThreadLocalThreadLocal原理內存泄露強引用:軟引用弱引用虛引用ThreadLocal內存泄露 synchronized鎖實現 synchronized是一個關鍵字,實現同步,還需要我們提供一個同步鎖對象,記錄鎖狀態,記錄…

【JavaEE】網絡原理之初識

1.????前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 親愛的朋友們&#x1f44b;&#x1f44b;&#xff0c;這里是E綿綿呀????。 如果你喜歡這篇文章&#xff0c;請別吝嗇你的點贊????和收藏&#x1f4d6;&#x1f4d6;。如果你對我的…

操作系統-八股

進程基礎&#xff1a; 進程定義&#xff1a;運行中的程序&#xff0c;有獨立的內存空間和地址&#xff0c;是系統進行資源調度和分配的基本單位。 并發&#xff0c;并行 并發就是單核上面輪詢&#xff0c;并行就是同時執行&#xff08;多核&#xff09;&#xff1b; 進程上下…

ffmpeg面試題整理

1. 基礎概念 問題&#xff1a;FFmpeg 是什么&#xff1f;它的核心功能有哪些&#xff1f; 編解碼&#xff1a;支持幾乎所有音視頻格式&#xff08;如 H.264, AAC, MP3&#xff09;。轉換&#xff1a;在不同容器格式之間轉換&#xff08;如 MP4 → MKV&#xff09;。流處理&…