Python自動化測試斷言詳細實戰代碼(建議收藏)

🍅 視頻學習:文末有免費的配套視頻可觀看

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

在測試用例中,執行完測試用例后,最后一步是判斷測試結果是 pass 還是 fail,自動化測試腳本里面一般把這種生成測試結果的方法稱為斷言assert。

接口請求斷言是指在發起請求之后,對返回的響應內容去做判斷,用來查看是否響應內容是否與規定的返回值相符。

在發起請求后,我們使用一個變量 r 存儲響應的內容,也就是 Response 對象。

Response 對象有很多功能強大的方法可以調用,比如直接獲取響應頭,獲取 Unicode 編碼后的響應內容,獲取二進制的響應內容,獲取原始的響應內容等等。

接下來我們就詳解對接口服務發起 HTTP 請求信息,獲得響應內容之后,對其做斷言驗證。

一、Python 接口自動化斷言

在發起請求后,使用一個變量r存儲響應的內容,也就是Response對象。

r = requests.get("https://xxxxx")

響應結果:

{"args": {},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Host": "httpbin.ceshiren.com","User-Agent": "python-requests/2.25.1","X-Forwarded-Host": "httpbin.ceshiren.com","X-Scheme": "https"},"origin": "119.123.205.82","url": "https://xxxxx"
}

Response 對象有很多功能強大的方法可以調用,比如直接獲取響應頭,獲取 Unicode 編碼后的響應內容,獲取二進制的響應內容,獲取原始的響應內容等等。

響應斷言

響應狀態碼斷言

1、斷言成功

import requests
r = requests.get('https://xxxxx')
assert r.status_code==200

assert是 python 的內置函數,用來判斷表達式,當表達式條件為 False 的時候就會觸發異常。r.status_code是 response 對象內的一個方法,用于獲得返回值的狀態碼。assert r.status_code==200 就是在判斷狀態碼是否等于 200,如果不等于 200 則會拋出異常。

2、斷言失敗

>>> import requests
>>> r = requests.get('https://xxxxx')
>>> assert r.status_code==400
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AssertionError

從以上例子可了解到,此響應狀態碼實際輸出與預期結果狀態碼 400 不相等,所以拋出了異常。

Json 響應斷言

data = {"hogwarts": ["a","b","c"]}
r = requests.post('https://xxxxx',json=data)
print(json.dumps(r.json(),indent=2))
assert r.status_code == 200
assert r.json()["json"]["hogwarts"][0] == "a"

響應結果:

"args": {},"data": "{"hogwarts": ["a", "b", "c"]}","files": {},"form": {},"headers": {...省略...},"json": {"hogwarts": ["a","b","c"]},"origin": "113.89.8.68","url": "https://xxxx"
}

通過 assert r.json()[“json”][“hogwarts”][0] == “a” 對 json 的內容進行斷言,其中 r.json() 是獲取相應的內容,r.json()[“json”] 是獲取到 json 的內容,r.json()[“json”][“hogwarts”] 是獲取到 hogwarts 的內容,r.json()[“json”][“hogwarts”][0] 是 hogwarts 下的第一個數據。

二、Java 接口自動化斷言

Java 通過 then 進行斷言驗證,then() 方法可以對多種不同類型的響應信息進行驗證。

斷言響應狀態碼成功

import static io.restassured.RestAssured.*;public class Requests {public static void main(String[] args) {given().when().get("https://xxxxx").//通常通過 then 進行斷言驗證 then().statusCode(200);}
}

通過 then() 方法提供的 statusCode() 方法即可實現對于響應狀態碼的驗證,statusCode() 方法通常接收的是 int 類型的參數。statusCode(200) 表示判斷響應狀態碼是否等于 200,如果不等于 200 則會拋出異常。

如果將以上代碼中斷言驗證的代碼改成 statusCode(300),那么控制臺則會輸出異常信息。

Exception in thread "main" java.lang.AssertionError: 1 expectation failed.
Expected status code <300> but was <200>.

json 響應斷言

import static io.restassured.RestAssured.*;
import static org.hamcrest.core.IsEqual.equalTo;public class Requests {public static void main(String[] args) {given().when().get("https://xxxxx").then().body("headers.Host", equalTo("httpbin.ceshiren.com")).log().all();}
}

通過 then().body(“headers.Host”, equalTo(“httpbin.ceshiren.com”)) 對 json 的內容進行斷言,其中 then().body() 是獲取相應的內容。

第一個參數是從響應內容中提取實際的字段值。

第二個參數調用了 equalTo() 方法,并在其中傳入了期望結果。

同時,在這我為大家準備了一份軟件測試視頻教程(含面試、接口、自動化、性能測試等),就在下方,需要的可以直接去觀看。

字節大佬,一周講完,自動化測試項目實戰,這套教程是怎么稱霸B站的?【2024最新版】

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

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

相關文章

sh發送郵件如何通過配置SMTP服務器來實現?

sh發送郵件的操作方法&#xff1f;如何使用Shell腳本自動發信&#xff1f; 在Shell腳本中實現郵件發送功能是一項常見需求&#xff0c;特別是在自動化任務執行或系統監控中。AokSend將介紹如何通過配置SMTP服務器來實現sh發送郵件的方法和注意事項。 sh發送郵件&#xff1a;安…

Redash、Superset、DataEase、Metabase、FineBI 和 Power BI 報表系統的優缺點

最近在做報表系統的選型與調研&#xff0c;其中嘗試了Redash、Superset、DataEase、Metabase、FineBI 和 Power BI幾個報表系統&#xff0c;主要想使用開源免費的&#xff0c;如果大家有好用的報表系統推薦歡迎留言。 Redash 優點&#xff1a; 開源且免費&#xff1a;Redash…

【已解決】Error in the HTTP2 framing layer

1.問題描述 在使用git將代碼上傳github的時候在最后一部push的時候遇到這個fatal 2.解決方案 由于我原先設置的origin是http協議下的&#xff0c;如下 git remote add origin https://github.com/Charlesbibi/Simple_Cloud.githttp協議下行不通不妨試一試ssh協議下&#xff…

跟風報考PMP,我真的后悔了

真的太香吧&#xff01; 我一開始沒打算報考PMP證書的&#xff0c;但是我看身邊很多朋友都因為PMP證書得到了升職加薪&#xff0c;這讓我實在是一整個羨慕住了&#xff0c;所以我也去報考了PMP。 報考PMP前期我做了什么&#xff1f; 由于我是零基礎&#xff0c;沒有什么項目…

探索網格生成技術在AI去衣應用中的作用

引言&#xff1a; 隨著人工智能技術的飛速發展&#xff0c;其在圖像處理和計算機視覺領域的應用日益廣泛。其中&#xff0c;AI去衣技術作為一種新興的應用&#xff0c;引起了廣泛的關注和討論。然而&#xff0c;要實現這一功能并非易事&#xff0c;需要借助于先進的算法和技術。…

Mybatis第一講——你會Mybatis嗎?

文章目錄 什么是MybatisMybatis的作用是什么 Mybatis 怎么使用注解的方式注解的多種使用Options注解ResultType注解 XML的方式update標簽 #{} 和 ${}符號的區別#{}占位${}占位 ${}占位的危險性(SQL注入)數據庫連接池 什么是Mybatis 首先什么是Mybatis呢&#xff1f;Mybatis是一…

latex bib引參考文獻

1.bib內容 2.sn-mathphys-num是官方的參考文獻格式 3.不用導cite包&#xff0c;文中這么寫 4.end document前ckwx是自己命名的bib的名字

Ollama教程,本地部署大模型Ollama,docker安裝方法,僅供學習使用

不可商用&#xff01;&#xff01;僅僅提供學習使用&#xff01; 先上視頻教學&#xff1a; Ollama教程&#xff0c;本地部署大模型Ollama&#xff0c;docker安裝方法&#xff0c;僅供學習使用&#xff01; 資料獲取 &#xff1a; Ollama下載包和安裝文檔在這里&#xff1…

Web自動化測試-掌握selenium工具用法,使用WebDriver測試Chrome/FireFox網頁(Java

目錄 一、在Eclipse中構建Maven項目 1.全局配置Maven 2.配置JDK路徑 3.創建Maven項目 4.引入selenium-java依賴 二、Chrome自動化腳本編寫 1.創建一個ChromeTest類 2.測試ChromeDriver 3.下載chromedriver驅動 4.在腳本中通過System.setProperty方法指定chromedriver的…

vi和vim有什么不同?

vi 和 vim 都是流行的文本編輯器&#xff0c;它們之間有以下主要區別&#xff1a; 歷史&#xff1a; vi 是一個非常古老的文本編輯器&#xff0c;最初由 Bill Joy 在 1976 年為 Unix 系統編寫。vim&#xff08;Vi IMproved&#xff09;是 vi 的一個增強版&#xff0c;由 Bram M…

Ubuntu 20.04安裝CMake 3.22.6版本

Ubuntu 20.04通過apt安裝的cmake版本是3.16.3&#xff0c;默認安裝到/usr/bin/cmake路徑。 $ cmake Command cmake not found, but can be installed with:sudo snap install cmake # version 3.29.3, or sudo apt install cmake # version 3.16.3-1ubuntu1.20.04.1See sna…

Multer 文件上傳中間件 和 Busboy表單解析

Multer 是一個node.js中間件&#xff0c;用于處理 multipart/form-data類型的表單數據&#xff0c;主要用于上傳文件。只處理 multipart/form-data 類型的表單數據。 Multer是基于Busboy解析的文件參數信息&#xff0c;獲取fileStream&#xff0c;并通過storage轉存的file.str…

Unity + 雷達 粒子互動(待更新)

效果預覽: 花海(帶移動方向) VFX 實例 腳本示例 使用TouchScript,計算玩家是否移動,且計算移動方向 using System.Collections; using System.Collections.Generic; using TouchScript; using TouchScript.Pointers; using UnityEngine; using UnityEngine.VFX;public …

AI預測福彩3D采取888=3策略+和值012路一縮定乾坤測試6月1日預測第8彈

今天繼續基于8883的大底&#xff0c;使用盡可能少的條件進行縮號。好了&#xff0c;直接上結果吧~ 首先&#xff0c;888定位如下&#xff1a; 百位&#xff1a;6,5,4,7,8,9,1,0 十位&#xff1a;7,8,6,5,9,3,1,0 個位&#xff1a;5,7,6,4,2,…

看廣告賺金幣提現小游戲app開發源碼

開發一個看廣告賺金幣并可以提現的小游戲APP&#xff0c;源碼的搭建涉及到多個方面&#xff0c;包括前端界面設計、后端邏輯處理、數據庫管理以及廣告平臺的對接等。以下是一些建議的步驟和考慮因素&#xff1a; 前端界面設計&#xff1a; 使用HTML5、CSS3和JavaScript等技術…

第十三屆藍橋杯B組c++國賽

A - 2022&#xff1a; 題目&#xff1a; 筆記&#xff1a; 一道經典的dp題&#xff1a; &#xff08;1&#xff09;明確dp數組含義&#xff1a; dp[i][j][k]: 表示前i個數字中選擇j個湊成k的方法數。 &#xff08;2&#xff09;確定狀態轉移方程&#xff1a; dp[i][j][k…

C++中的引用和解引用,及在Lambda中的簡單使用

目錄 摘要 引用&#xff08;Reference&#xff09; 定義 用法 解引用&#xff08;Dereference&#xff09; 定義 用法 Lambda表達式結合引用和解引用 引用結合Lambda表達式 解引用結合Lambda表達式 較為復雜的使用 總結 摘要 在C中&#xff0c;引用&#xff08;Re…

linux 內核哪種鎖可以遞歸調用 ?

當數據被多線程并發訪問(讀/寫)時&#xff0c;需要對數據加鎖。linux 內核中常用的鎖有兩類&#xff1a;自旋鎖和互斥體。在使用鎖的時候&#xff0c;最常見的 bug 是死鎖問題&#xff0c;死鎖問題很多時候比較難定位&#xff0c;并且影響較大。本文先會介紹兩種引起死鎖的原因…

Java-----String類

1.String類的重要性 經過了C語言的學習&#xff0c;我們認識了字符串&#xff0c;但在C語言中&#xff0c;我們表示字符串進行操作的話需要通過字符指針或者字符數組&#xff0c;可以使用標準庫中提供的一系列方法對字符串的內容進行操作&#xff0c;但這種表達和操作數據的方…

溝通程序化(1):跟著鬼谷子學溝通—“飛箝”之術

溝通的基礎需要傾聽&#xff0c;但如果對方聽不進你的話&#xff0c;即便你說的再有道理&#xff0c;對方也很難入心。讓我們看看鬼谷子的“飛箝”之術能給我們帶來什么樣的啟發吧&#xff01; “飛箝”之術&#xff0c;源自中國古代兵法家、縱橫家鼻祖鬼谷子的智慧&#xff0…