【接口測試_03課_-接口自動化思維梳理及Requests庫應用】

一、通過代碼,實現Jmeter

1、項目要放在虛擬環境里面,解釋器要使用虛擬環境的

上面是虛擬環境,下面是系統環境。2選一

venv目錄

?

?查看當前虛擬環境已存在的依賴包

2、安裝Requests依賴包?

1)安裝命令

pip install requests

?

如果是mac電腦需要注意,python2是使用pip命令。python3 是使用 pip3 命令

2) 安裝完之后,查看安裝的版本

pip show requests

或者使用 pip list 去看,但是如果包太多,list內容就太多了?

3)requests對應的方法有13個參數?

接口響應碼及對應的含義:3:重定向
2:成功
1:響應正確
4:客戶端問題
5:服務器問題

?

3、編寫代碼

注意:Requests 是用Python語言編寫HTTP庫,專門用于發于請求的庫注意:
params 一般就是拼接在url當中(問號后面的參數)
Requests對應的方法中,有13參數。
http請求和https請求沒有什么區別,只是https多了SSL證書,如果你們證書驗證不通過,你們可以嘗試把 verity= False

1、get請求

獲取對應的響應數據
獲取對應的響應數據:res.方法# 1. 獲取對應的請求URL
# print(res.url)# 2. 獲取對應響應數據---并且以文本信息顯示
# print(res.text)# 3. 獲取對應響應數據---并且以JSON格式顯示,如果你的數據非Json格式則會報錯
# print(res.json())  # 用案例三可以看到效果# 4. 獲取對應響應數據---并且以字節方式顯示,會自動為你解碼 gzip 和 deflate 壓縮
# print(res.content)# 5. 獲取響應的狀態碼
# print(res.status_code)# 6. 獲取對應的響應頭 ,數據顯示是什么格式由:'Content-Type': 'text/html; 決定
# print(res.headers)
?獲取對應的請求數據
# 獲取對應的請求數據:res.request.方法# 1、對應的請求方法
# print(res.request.method)# 2、對應的請求的url
# print(res.request.url)# 3、對應的請求的頭部
# print(res.request.headers)
1)以文本打印的方式,將請求的文本信息打印出來
import requestsurldata = "http://shop-xo.hctestedu.com/"r = requests.get(urldata)   # 直接傳urldata (位置傳參)# 獲取對象的文本信息
print(r.text)

運行結果?

2) Params,請求的參數是拼接在問好后面

下面get里面的兩個url不同。前一個紫色的是 get請求的參數,后面的黑色的,是請求地址的變量

3)查看請求的url?,params參數直接拼接在URL里面
# params  參數應用,直接拼在鏈接里面urldata = "https://www.baidu.com/s?wd=hello"r = requests.get(urldata)#打印請求的url
print(r.url)

4)?查看請求的url?,params參數不拼接在URL里面,而是使用公共參數
# # params  參數應用,通過變量方式使用urldata = "https://www.baidu.com/s"paramsdata = {"wd": "hello11"}r = requests.get(url=urldata,params=paramsdata)print(r.url)

?2、post請求

1)普通的表單提交
import requests# 案例 : 登錄案例
# 分析: 四要素 :請求url 請求方法(POST) 請求數據 響應數據# requests默認的post請求數據方式是:'Content-Type': 'application/x-www-form-urlencoded'url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "xxx", "pwd": "xxx", "type": "username"}res = requests.post(url=url, params=public_data, data=data)# ----------------------------------------
# 1. 獲取對應的請求URL
print(res.url)# 2. 獲取對應的文本信息
# print(res.text)# 3. 獲取請求頭
print(res.request.headers)

結果?

2) Json表單的提交:
方法一:json提交數據直接
# 方法一:json提交數據直接:json = 請求數據
url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "hami", "pwd": "123456", "type": "username"}res = requests.post(url=url, params=public_data, json=data)# ----------------------------------------
# 1. 獲取對應的請求URL
print(res.url)
# # 2. 獲取對應的文本信息
# print(res.text)
# # 3. 獲取請求頭
# print(res.request.headers)

?

方法二:設置請求頭為json格式

(字典是數據類型,JSON是數據格式.字典不是JSON類型)

# 方法二:設置請求頭為json格式
url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}#下面是自己手寫header
header = {'Content-Type': 'application/json; charset=utf-8'}#  data在這個位置,它只是一個字典(字典是數據類型,JSON是數據格式.字典不是JSON類型),而我們需要進行處理變成字符串格式。
data = {"accounts": "hami", "pwd": "123456", "type": "username"}#  下面轉化為JSON,是將 dict 轉換為 string
new_data = json.dumps(data)res = requests.post(url=url, params=public_data, headers=header, data=new_data)# ----------------------------------------
# # 1. 獲取對應的請求URL
# print(res.url)
# # 2. 獲取對應的文本信息
# print(res.text)
# # 3. 獲取請求頭
# print(res.request.headers)

?

3)上傳圖片
3.1)上傳圖片,需要使用一個輕量級的WEB框架,Flask,創建了一個應用程序,去保存圖片文件。
pip install flask

下面這部分代碼相當于服務端,處理圖片上傳和存儲邏輯?

3.2)上傳文件

下面的代碼,相當于前端,去上傳圖片

import requests# 分析: 四要素 :請求url 請求方法(POST) 請求數據 響應數據#這個是老師自己寫的一個上傳圖片的接口,服務器不一定還能再用了
url = "http://127.0.0.1:5000/upload"
data = {"image": open("20240223220740.png", "rb")}res = requests.post(url=url, files=data)# ----------------------------------------
# 1. 獲取對應的請求URL
print(res.url)
# 2. 獲取對應的文本信息
# print(res.text)  # unicode編碼
print(res.json())
# 3. 獲取響應頭
print(res.headers)
# 4. 獲取請求頭
print(res.request.headers)

?面試點

接口請求的時候,如何一直保持會話:# 總結:如果說工作當中有需要保持會話,不能直接用requests去發送請求
# 需要實例化一個session的請求對象,發送請求(在這一個會話里面,后續其他請求都用session對象進行發送即可)# 面試題: session\token\cookies\簽名 區別:
token是請求參數
cookie 、session是保持會話# 核心點:都是用來鑒權 (一般用哪種,這個不一定,看開發)
# 1. token 一般就是一個請求參數,放在請求頭 (時效性\也有可能是其它名字)。開發用算法生成的
# 2. 存儲位置不同 :cookie存儲在客戶端,session存儲在服務器端。
# 3. 大小限制不同 :cookie有大小限制,而session沒有大小限制。
# 4. 安全隱患不同 :cookie存在安全隱患,通過攔截或本地文件找得到存儲在其中的信息。
# 5. 時效性不同 :cookie有到期時間,而session只在用戶關閉瀏覽器時消失。

3、接口斷言

# 斷言:期望結果和實際結果進行對比# assert 表達式,信息# 如果說正確的話不會有什么提示,錯誤的話,會有異常信息assert 1 == 1, "因為是正確的,所以這行提示不會打印"assert 1 == 2, "兩者不等于的報錯提示"

斷言成功--不會打印斷言提示
?斷言失敗--才會打印斷言提示

綠色的是斷言的值,藍色的才是提示信息

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

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

相關文章

防火墻技術的演進,什么是下一代防火墻(NGFW)?

防火墻技術的演進 防火墻技術的演進經歷了不同階段,從包過濾防火墻到狀態檢測防火墻,再到集成多種安全功能的UTM(統一威脅管理)設備,最終發展到具備應用識別能力的NGFW(下一代防火墻)。 包過濾…

DTAS 尺寸公差分析及尺寸鏈計算-建模神器 — 用戶DIY裝配

工業互聯網(工業4.0) 是未來智能制造的核心,工業軟件是智能制造的靈魂。 相關工業軟件及系統的自主研發是智能制造和質量升級轉型亟需解決的卡脖子環節,而公差分析軟件系統是前期質量研發精準設計、降本增效的關鍵。 數字化時代&#xff0…

知了匯智副總經理趙懋駿出席“走進阿里”CEO聯席會,共話AI大模型新趨勢

在智能科技日新月異的今天,匯智知了堂副總經理趙懋駿于3月28日受邀出席了在天府軟件園舉行的“走進阿里–2024年CEO聯席會”,會議聚焦阿里云AI技術的最新進展與行業應用,特別是“AI技術正在加速變革:大模型的歷史、現在與趨勢”&a…

手撕C語言題典——環形鏈表的約瑟夫問題

目錄 前言 一.故事背景 二.題目 ?編輯三.思路 1)數組 ?編輯2) 循環鏈表 四.代碼實現 搭配食用更佳哦~~ 數據結構之單單單——鏈表-CSDN博客 數據結構之單鏈表的基本操作-CSDN博客 前面學了單鏈表的相關知識,我們來嘗試做一下關于…

centos 把nginx更新到最新版本

yum install epel-release # 添加 EPEL 軟件倉庫,這是 Nginx 官方軟件倉庫的依賴項 yum install yum-utils # yum-utils 包含了 yum-config-manager 工具,它可以讓您輕松地啟用、禁用或配置 yum 軟件倉庫 vi /etc/yum.repos.d/nginx.repo # 增加以下內容…

灌區信息化管理平臺系統包含哪些內容?(全面介紹)

政策背景 2022年12月29日,水利部啟動48處大中型灌區開展數字孿生灌區先行先試建設。 2023年2月24日,《2023年農村水利水電工作要點》:2023年農村水利水電工作的總體思路包括:緊盯保障國家糧食安全,加快推進大中型灌區現代化改造,…

Linux repo包安裝Nginx

Linux repo包安裝Nginx 1. 將nginx.repo 文件拷貝到 /etc/yum.repos.d 目錄2.找到原來的NGINX配置文件打包備份3.執行Nginx安裝命令4. 重啟 nginx -s reload5. 查看Nginx版本 1. 將nginx.repo 文件拷貝到 /etc/yum.repos.d 目錄 cp nginx.repo /etc/yum.repos.d2.找到原來的…

jQuery 入門:輕松創建與插入節點

在Web開發中,動態地創建和管理DOM(文檔對象模型)節點是一項基本且強大的技能。jQuery,作為JavaScript的一個流行庫,以其簡潔的API簡化了這一過程。本文將通過一個簡單的示例,介紹如何使用jQuery來創建新的D…

【力扣一輪】鏈表-刪除鏈表指定值的元素

刪除鏈表指定元素 力扣鏈接 代碼隨想錄題解 分為兩個版本,一個是帶有虛擬頭節點,一個是不帶。 無論是帶有還是不帶有,我都遇到了這幾個問題: ①while循環時的判斷,首先要判斷當前節點是否為空,接著才能…

bmi088-linux驅動(I2C)

電氣特性: 在正常工作時,gyro 工作電流為5mA,acc 工作電流為150uA。 SPI 時鐘和數據電平范圍 0 -3.6 結構框圖如下: 硬件連接圖如下: note: 1. 通過PS引腳選擇通訊協議,上拉引腳則選擇的是I2C…

系統定期執行命令的方法

系統定期執行命令的方法 一、進入超級用戶下 執行命令:sudo su 二、添加要執行的命令 例子:每天0點執行一次myapp.sh命令 先后輸入:crontab -e、 1、 回車 設置每天0點執行一次myapp.sh操作,需要寫絕對路徑 含義&#xff1…

離線修復.dll,Microsoft Visual C++

在安裝mysql時遇到下面的問題,如果是有網絡的情況下微軟管網下載安裝就行了,用的服務器不允許連接互聯網。 后面經過尋找,找到了一個修復工具,可一次修復所有的問題,特別好用分享給寶子們。 下載鏈接:http…

樹莓派 4B putty遠程連接登錄顯示拒絕訪問,密碼修改

putty顯示拒絕訪問 可能是樹莓派的ip沒有找到正確的 在下載系統鏡像的時候,會提示設置wifi 這里設置的WiFi和密碼需記住,主機名也需記住 可以在手機打開熱點(將熱點的賬號和密碼改為跟你設置的wifi一樣的) 可以在手機后臺查看…

頁面埋點H5 大數據uniapp 按需要更改代碼就行

邏輯思路 跳轉頁面前,記錄當前頁面的信息停留的時長以及各種信息,然后等走的時候再將記錄的信息發送出去 1.記錄當前頁面信息的函數 // 埋點通用接口 // triggerType: 必傳 類型 entryStr(進入) || leaveStr(離開) || String:自定義事件描述 // pageU…

微信小程序支付教程

微信小程序支付教程 Person: 微信小程序支付有幾種版本,分別是什么,寫一個詳細教程介紹下 ChatGPT: 微信小程序支付主要有兩種版本,分別為:JSSDK版本(v1.0)和WeixinJSBridge版本&…

超寬輸送帶耐熱性能怎么樣

超寬輸送帶耐熱性能解析 隨著工業領域的不斷發展和技術革新,超寬輸送帶的應用越來越廣泛。這種輸送帶在冶金、建筑、化工等多個行業中發揮著至關重要的作用,特別是在高溫環境下,其耐熱性能更是備受關注。那么,超寬輸送帶的耐熱性…

解釋下泛型擦除

在Java中,泛型擦除(Type Erasure)是Java泛型實現的一個重要概念。由于Java的泛型是在編譯時實現的(稱為編譯時類型檢查),而在運行時,Java虛擬機(JVM)并不支持泛型&#x…

HDFS小文件優化方法

1、HDFS小文件弊端 HDFS上每個文件都要在namenode上建立一個索引,這個索引的大小約為150byte,這樣當小文件比較多的時 候 ,就會產生很多的索引文件,一方面會大量占用namenode的內存空間 ,另一方面就是索引文件過大是的…

Linux —— 線程控制

Linux —— 線程控制 創建多個線程線程的優缺點優點缺點 pthread_self進程和線程的關系pthread_exit 線程等待pthread_ join線程的返回值線程分離pthread_detach 線程取消pthread_cancel pthread_t 的理解 我們今天接著來學習線程: 創建多個線程 我們可以結合以前…

【離散數學】偏序關系中蓋住關系的求取及格論中有補格的判定(c語言實現)

實驗要求 求n的因子函數 我們將n的因子存入數組中&#xff0c;n的因子就是可以整除n的數&#xff0c;所以我們通過一個for循環來求。返回因子個數。 //求n的因子,返回因子個數 int factors(int arr[], int n) {int j 0;for (int i 1; i < n; i){if (n % i 0){arr[j] i…