基于Pytest接口自動化的requests模塊項目實戰以及接口關聯方法詳解

?🍅?點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快?

1、基于pytest單元測試框架的規則

1.1 模塊名(即文件名)必須以test_開頭或者_test結尾

1.2 類名必須以Test開頭且不能有init方法

1.3 用例名(測試方法)必須以test開頭

2、項目實戰

import pytest as pytest
import requests# 此案例測試用例之間無法關聯cookie信息
class TestApi:# 類變量也叫全局變量access_token = ""# 獲取鑒權碼def test_get_token(self):url = "https://api.weiixn.com/token"datas = {"grant_type": "client_credential","appid": "wx32497320974","secret": "dh2983yr4fh9734."}res = requests.get(url=url, params=datas)result = res.json()TestApi.access_token = result["access_token"]# jsonpath提取實現接口關聯# lis = jsonpath.jsonpath(res.json(), "$.access_token")# print(lis[0])# re正則表達式提取# token = re.search('name="hduwqidh" value="(.*?)"', res.text).group(1)# 編輯標簽接口def test_edit_flag(self):url = "https://api.weiixn.com/update?access_token=" + TestApi.access_tokenheaders = {}# json是字典的字符串格式,兩者可以相互轉換json = {}# 鍵值對data = Noneres = requests.post(url=url, json=json, headers=headers)# 文件上傳def test_file_upload(self):url = "https://api.weiixn.com/update?access_token=" + TestApi.access_tokendatas = {# 文件路徑也可以寫為open("D:\\snipaste")"media": open(r"D:\snipaste", mode="rb")}res = requests.post(url=url, files=datas)if __name__ == '__main__':  # 入口pytest.main('-vs')

3、pytest的main使用

3.1 pytest.main() 運行模式時,main()不添加任何參數,表示運行當前目錄下的所有的測試文件

3.2 main()添加參數如下:

  • ? ?pytest.main(['-s', '-v', '-q', '-x','-k "print"'])
  • ? ?-s ? 對于代碼里print語句會將輸出至控制臺
  • ? ?-v ? 用于增加測試用例的冗長
  • ? ?-q ? 用于減少測試用例的執行結果的冗長
  • ? ?-x ? 出現一條用例執行失敗就退出測試,調試階段常用
  • ? ?-k "print" ?運行包含某個字符串的用例,如pytest -k add XX.py 表示運行XX.py中包含add的測試用例等等 ??

3.3 執行測試用例的過濾

執行某個測試類或測試方法用 :: 隔開,常用-vs參數

pytest.main(["-vs","模塊.py::類或方法"]) ??

命令行為:pytest 文件名.py::測試類或測試方法

pytest.main(["-vs","模塊.py::類::方法"]) ??

命令行為:pytest 文件名.py::測試類::測試方法

如果是在main目錄入口執行測試用例文件:

import pytest

if __name__ == '__main__':

? ? pytest.main(["-vs","--html=../../report_hdc/20211011_hdc_02.html","--self-contained-html"])

3.4 如果使用pytest.main()生效,再pycharm中必須設置Tools>Python Integrated Tools>Default test runner=Unittests;如果設置為pytest則是無效的。

3.5 在pytest中,測試函數可能返回多種結果,不只是通過或失敗。如下:

PASSED(.):測試通過

FAILED(F):測試失敗

SKIPED(s):測試未被執行,指定測試跳過執行

xfail (x):預期測試失敗,并且確實失敗

XPASS (X):預期測試失敗,但實際上運行通過,不符合預期

ERROR (E):測試用例之外的代碼觸發的異常

3.6 pytest.main(["-m", "run_first"])

使用-m 對用例進行標記,用例需注釋@pytest.mark.xxx,將xxx作為參數傳入

使用-m "mark1 and mark2"可以同時選中帶有這兩個標記的所有測試用例。

使用-m "mark1 and not mark2"選中帶有與mark1的測試用例,而過濾掉帶有mark2的測試用例

使用-m "mark1 or mark2"則選中帶有mark1或者mark2的所有測試用例?

4、接口關聯

4.1 三個層次

4.1.1 通過類變量保存中間變量實現接口關聯

4.1.2 通過單獨的文件保存中間變量實現接口關聯

4.1.3 極限封裝成零代碼的方式實現接口關聯

4.2 兩種方式

4.2.1 正則提取實現接口關聯

re.search() #通過正則匹配一個值,通過下標[1]取值,沒有匹配到返回none

re.findall() #通過正則匹配多個值,返回List,通過下標取值,沒有匹配到返回none

4.2.2 jsonpath提取實現接口關聯

jsonpath.jsonpath() #返回一個列表,通過下標取值,沒有找到返回none

5、總結?

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。

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

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

相關文章

匯總 JavaScript 內置對象常用方法詳解

匯總 JavaScript 內置對象常用方法詳解 JavaScript 提供了許多強大的內置對象,它們帶有各種實用的方法,能夠幫助我們更高效地編寫代碼。本文將介紹最常用的內置對象方法,并通過實例展示它們的使用場景。 目錄 Array 數組String 字符串Obje…

OceanBase TPCC測試常見報錯匯總

OceanBase TPCC測試常見報錯匯總 報錯1:加載測試數據時創建tablegroup失敗報錯2:加載測試數據時執行超時報錯3:加載測試數據時funcs.sh函數找不到報錯4:加載數據時報錯超過租戶內存上限辦法一:增加租戶內存辦法二:調高轉儲線程數辦法三:調整MemStore內存占比和凍結觸發閾…

Flutter 在 Dart 3.8 開始支持 Null-Aware Elements 語法,自動識別集合里的空元素

近日,在 Dart 3.8 的 changelog 里正式提交了 Null-Aware Elements 語法,該語法糖可以用于在 List、Set、Map 等集合中處理可能為 null 的元素或鍵值對,簡化顯式檢查 null 的場景: /之前 var listWithoutNullAwareElements [if …

SAIL-RK3588協作機器人運動控制器技術方案

一、核心能力與政策適配? ?政策合規性? 滿足工信部《智能機器人重點技術攻關指南》要求,支持 ?EtherCAT主站協議(符合IEC 61158標準)?,助力企業申報工業機器人研發專項補貼(最高300萬元/項目)?核心板…

Eigen幾何變換類 (Transform, Quaternion等)

1. Transform 類&#xff1a;仿射/射影變換 模板參數 cpp Transform<Scalar, Dim, Mode, Options> Scalar&#xff1a;數據類型&#xff08;如 float, double&#xff09;。 Dim&#xff1a;維度&#xff08;2 或 3&#xff09;。 Mode&#xff1a;變換類型&#xf…

openGauss手工配置主備

1、初始化 創建一個操作系統用戶&#xff0c;例如postgres&#xff0c;為這個用戶設置PATH和LD_LIBRARY_PATH環境變量&#xff0c;指向opengauss/bin和opengauss/lib export GAUSSHOME/mnt/disk01/opengauss export PATH$GAUSSHOME/bin:$PATH export LD_LIBRARY_PATH$GAUSS…

CSS預處理器對比:Sass、Less與Stylus如何選擇

引言 CSS預處理器已成為現代前端開發的標準工具&#xff0c;它們通過添加編程特性來增強純CSS的功能&#xff0c;使樣式表更加模塊化、可維護且高效。在眾多預處理器中&#xff0c;Sass、Less和Stylus是三個最流行的選擇&#xff0c;它們各自擁有獨特的語法和功能特點。本文將深…

基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述

以下是基于Docker、Kubernetes和Jenkins的百節點部署架構圖及信息流描述,使用文本和Mermaid語法表示: 架構圖(Mermaid語法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…

js中get,set用法

1、作為對象的訪問器屬性 //使用Object.definePropertylet obj {_a:123};Object.defineProperty(obj, "a", {get() {return this._a;},set(val) {this._aval},});console.log(obj.a); //123obj.a456console.log(obj.a) // 456 //使用對象字面量let obj {_a:123,ge…

Steam游戲服務器攻防全景解讀——如何構建游戲級抗DDoS防御體系?

Steam游戲服務器的DDoS攻防體系設計&#xff0c;從協議層漏洞利用到業務連續性保障&#xff0c;深度拆解反射型攻擊、TCP狀態耗盡等7類威脅場景。基于全球15個游戲廠商攻防實戰數據&#xff0c;提供包含邊緣節點調度、AI流量指紋識別、SteamCMD加固配置的三維防護方案&#xff…

【AI】SpringAI 第四彈:接入本地大模型 Ollama

Ollama 是一個開源的大型語言模型服務工具。它的主要作用是幫助用戶快速在本地運行大模型&#xff0c; 簡化了在 Docker 容器內部署和管理大語言模型&#xff08;LLM&#xff09;的過程。 1. 確保Ollama 已經啟動 # 查看幫助文檔 ollama -h# 自動下載并啟動 ollama run deeps…

大語言模型的評估指標

目錄 一、混淆矩陣 1. 混淆矩陣的結構&#xff08;二分類為例&#xff09; 2.從混淆矩陣衍生的核心指標 3.多分類任務的擴展 4. 混淆矩陣的實戰應用 二、分類任務核心指標 1. Accuracy&#xff08;準確率&#xff09; 2. Precision&#xff08;精確率&#xff09; 3. …

SpringBoot Gradle插件:構建與打包配置

文章目錄 引言一、Spring Boot Gradle插件基礎二、依賴管理與配置三、應用打包配置四、啟動腳本與運行配置五、多環境構建與配置六、集成Docker與云原生支持七、實踐案例&#xff1a;自定義Spring Boot應用構建總結 引言 在Java生態系統中&#xff0c;Gradle作為一種靈活且強大…

Vue3 組件通信與插槽

Vue3 組件通信方式全解&#xff08;10種方案&#xff09; 一、組件通信方式概覽 通信方式適用場景數據流向復雜度Props/自定義事件父子組件簡單通信父 ? 子?v-model 雙向綁定父子表單組件父 ? 子??Provide/Inject跨層級組件通信祖先 → 后代??事件總線任意組件間通信任…

【KWDB 創作者計劃】_嵌入式硬件篇---數字電子器件

文章目錄 前言一、系列前綴(如 "74" 或 "54")74(商用級)54(工業級)二、邏輯家族(如 "LS"、"HC"、"HCT" 等)TTL(晶體管-晶體管邏輯)家族CMOS(互補金屬氧化物半導體)家族BiCMOS(雙極 CMOS)家族三、功能編號(如…

黃勇的《架構探險:從Java到大數據》內容詳解

《架構探險&#xff1a;從Java到大數據》內容詳解 1. 書籍核心主題 黃勇的《架構探險&#xff1a;從Java到大數據》是一本系統性探討架構設計演進的著作&#xff0c;結合Java技術棧和大數據場景&#xff0c;深入分析了從單體架構到分布式、微服務、云原生的演進路徑&#xff0…

【動手學強化學習】番外8-IPPO應用框架學習與復現

文章目錄 一、待解決問題1.1 問題描述1.2 解決方法 二、方法詳述2.1 必要說明&#xff08;1&#xff09;MAPPO 與 IPPO 算法的區別在于什么地方&#xff1f;&#xff08;2&#xff09;IPPO 算法應用框架主要參考來源 2.2 應用步驟2.2.1 搭建基礎環境2.2.2 IPPO 算法實例復現&am…

驅動開發硬核特訓 · Day 17:深入掌握中斷機制與驅動開發中的應用實戰

&#x1f3a5; 視頻教程請關注 B 站&#xff1a;“嵌入式 Jerry” 一、前言 在嵌入式驅動開發中&#xff0c;“中斷”幾乎無處不在。無論是 GPIO 按鍵、串口通信、網絡設備&#xff0c;還是 SoC 上的各種控制器&#xff0c;中斷都扮演著核心觸發機制的角色。對中斷機制掌握程度…

通過門店銷售明細表用PySpark得到每月每個門店的銷冠和按月的同比環比數據

假設我在Amazon S3上有銷售表的Parquet數據文件的路徑&#xff0c;包含ID主鍵、門店ID、日期、銷售員姓名和銷售額&#xff0c;需要分別用PySpark的SparkSQL和Dataframe API統計出每個月所有門店和各門店銷售額最高的人&#xff0c;不一定是一個人&#xff0c;以及他所在的門店…

PostgreSQL 常用日志

PostgreSQL 常用日志詳解 PostgreSQL 提供了多種日志類型&#xff0c;用于監控數據庫活動、排查問題和優化性能。以下是 PostgreSQL 中最常用的日志類型及其配置和使用方法。 一、主要日志類型 日志類型文件位置主要內容用途服務器日志postgresql-<日期>.log服務器運行…