<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] **API接口** 應用程序編程接口(APl: Application Programming Interface,應用程序編程接口):以HTP協議形式提供,定義了輸入、輸岀、功能描述的服務。 <br /> **接口測試流程:** 1、接口的功能測試(先要保證接口是正確的) 2、測試接口的數據(傳遞一些特殊的數據,保證接口沒有問題) 3、自動化測試腳本的編輯 4、接口的性能、壓力測試 <br /> **網絡編程基本概念:** ``` 客戶端( Client):移動應用(lOS、 Android、Web等應用) 服務器( Server):為客戶端提供服務、提供數據、提供資源等機器 請求( Request):客戶端向服務器索取數據的一種行為 響應( Response):服務器對客戶端對請求做出的反應,一般指返回數據給客戶端 ``` ![F71CFA97-7C35-4910-9AB2-36CE80D8DAB6.jpg](https://i.loli.net/2021/01/31/iKpQDW3LIFSNZr5.jpg) <br /> ### **HTTP協議** HTTP協議概念: 協議:計算機通信網絡中兩臺計算機之前進行通信所必須共同遵守的規則或規定。 ? HTTP協議:超文本傳輸協議,是一種規定了瀏覽器和服務器之間通信的規則 URL(統一資源定位符) 概念:互聯網上資源的地址、位置。每一個資源都有一個唯一的URL。 格式:協議://主機地址/路徑 <br /> ### **GET、POST請求** ![C2B94567-9CBF-4EFE-A2EB-A8D3B9EEEBB9.jpg](https://i.loli.net/2021/01/31/Cceyl6Vfat8vzSN.jpg) ``` 數據傳遞的格式: 鍵值對:?xx=11&xx=222 json數據: { "屬性名1":"屬性值", "屬性名2":"屬性值", "屬性名3":"屬性值", } ``` ``` http協議之常見響應狀態碼 狀態碼有三位數字組成,第一位數字定義了響應類型,有5種可能取值。 1xx: 指示信息一表示請求已接收,繼續處理。 2XX: 成功一表示請求已被成功接收、理解、接受。 3XX: 重定向一要完成請求必須進行更進一步的操作。 4xx: 客戶端錯誤一請求有語法錯誤或請求無法實現。 5xx: 服務器端錯誤—服務器未能實現合法的請求。 ``` <br /> ### **restful風格** ◆按照一定的規則寫出的易讀、易懂的api文檔;目的是讓前端、后端、測試三方在工作的時候有 據可循,提升開發和測試的效率(非強制要求,軟要求) ◆增刪改查四大功能的語法風格 ``` (1)查 方法:get 響應碼:200+查詢的數據 (2)增 方法:post 響應碼:201+新增的數據 (3)改 方法:put 響應碼:200或201+修改后的數據 (4)刪 方法:delete 響應碼:204+無 ``` ### **接口測試:接口測試(重點)** ``` A、是什么? 測試后端實現是否符合接口規范 B、為什么? 程序安全、效率 C、怎么用?(實現流程) 模擬客戶向服務器發送數據,然后查看響應 要素1:定位服務器資源(通過URL實現[http://www.baidu.com](http://www.baidu.com) | [http://127.0.0.1:8000/](http://127.0.0.1:8000/)資源路徑) 要素2:模擬用戶提交數據 要素3:查看響應的結果是否符合預期 D、接口測試分類(記住) 類型1:web接口測試(BS架構) 服務器接口測試:測試自己公司實現的接口 第三方接口測試:測試別的公司實現的接口 類型2:模塊接口測試(CS架構) ``` <br /> ### **API接口清單** <details> <summary>API接口清單</summary> ``` 一、查詢 1.1 學院-查詢所有 請求方法:GET 請求地址:http://127.0.0.1:8000/api/departments/ 1.2 學院-查詢指定 請求方法:GET 請求地址:http://127.0.0.1:8000/api/departments/T02/ (注:T2為學院ID;) 1.3 根據指定參數進行學院-List-$dep_id_list的相關查詢 請求方法:GET 請求地址:http://127.0.0.1:8000/api/departments/?$dep_id_list=T01,T02,T03 (注:$dep_id_list:為參數名稱;T01,T02,T03為:學院ID;) 1.4 學院-List-$master_name_list查詢 請求方法:GET 請求地址:http://127.0.0.1:8000/api/departments/?$master_name_list=Java-Master,Test-Master (注:$ master_name1ist:為參數名稱;Java-Master,Test-Master為:院長名稱;) 1.5 學院-模糊 請求方法:GET 請求地址:http://127.0.0.1:8000/api/departments/?blur=l&dep_name=C (注:blur:為開啟模糊查詢參數1為開啟; dep_name:為參數名稱;C:學院名稱包含字符;) 1.6學院-組合 請求方法:GET 請求地址:http://127.0.0.1:8000/api/departments/?slogan=Here is Slogan&master_name=Test-Master (注: dep_name:學院名稱; master_name:為院長名稱;s1ogan:學院口號;三個條件可隨意組合或單獨使用 二、新增 2.1學院-新增 1)請求方法:POST 2)請求地址:http://127.0.0.1:8000/api/departments/ 3)請求J0SN報文: 4)調用傳入的json串如下(可新增多條,之間用,隔開): { "data":[ { "dep_id":"T01", "dep_name":"Test學院", "master_name":"Test-Master", "slogan":"Here is Slogan" } ] } 5)新增成功返回報文: { "already_exist":{ "results":[], "count":0 }, "create_success":{ "result":[ { "dep_id":"T02", "dep_name":"Java學院", "master_name":"Java-Master", "slogan":"java" } ], "count":1 } } 6)新增失敗id已存在-返回報文: { "already_exist":{ "results":[ { "dep_id":"T01", "dep_name":"Test學院", "master_name":"Test-Master", "slogan":"Here is Slogan" } ], "count":1 }, "create_success":{ "results":[], "count":0 } } 三、更新 3.1 學院-更新 1).請求方法:PUT 2).請求地址:http://127.0.0.1:8000/api/departments/T03 (注:1 為學院ID) 3).請求json報文: { "data":[ { "dep_id":"TO3", "dep_name":"C++/學院", "master_name":"C++-Master", "slogan":"Here is Slogan" } ] } 4).修改成功返回: { "dep_id":"T03", "dep_name":"C++/學院", "master_name":"C++-Master", "slogan":"Here is Slogan" } 四、刪除 4.1學院-刪除單個 請求方法: DELETE 請求地址:http://127.0.0.1:8000/api/departments/T03/ (注:10為學院ID) 4.2學院-刪除多個 請求方法: DELETE 請求地址:http://127.0.0.1:8000/api/departments/?$dep_id_list=8,9,11 (注:$dep_id_list:為參數名稱; 8,9,11:為學院ID) ``` </details> <br /> ### **jmeter** ``` 1、 jmeter:概述 A、是什么? jmeter是 Apache公司使用Java開發的一款測試工具 B、為什么? 高效、功能強大 模擬一些高并發或多次循環等特殊測試場景 優點: 1.開源、兔費 2.支持多協議:http https ftp ftps 3.小巧、功能強大 缺點: 1.不支持 IP 欺騙 2.不支持前端測試 2、Jmeter組件線程組 A、是什么? 進程:一個正在執行的程序就對應一個進程 線程:進程中的執行線索(一個進程有多個執行線索) 線程組按照線程性質對線程進行分組 并發執行:多個線程同時執行 特點:執行結束的順序和線程的啟動順序不一定一致。 順序執行:按照線程的啟動順序挨個執行 B、為什么? 方便管理 C、怎么用? C-1、三者關系:進程有多個線程組,線程組可以有多個線程 進程--測試計劃 線程組--線程組 線程--線程組屬性的線程數 C-2、默認情況下,線程組中的線程是并發執行的 每一個線程都要執行組內的http請求 C-3、怎么設置線程組順序執行 勾選測試計劃的第一個復選框(獨立運行每個線程組) ``` <br /> ## **接口自動化測試** ### **Requests庫介紹** ``` 1. Requests庫介紹 1.使用 python語言編寫 2.使用開源協議,基于urllib庫做的二次封裝 3. Requests庫中封裝了相應接口測試方法 2. Requests庫安裝及驗證 安裝: pip install requests 驗證: pip show requests ---> 顯示相應的版本信息 注意: 安裝時,電腦必須連接互聯網。 ``` ### **Resquests常用請求方法** ``` 方法:get、post、put、delete ``` **3.1 GET方法** 作用:獲取資源(查詢) <details> <summary>test01_get請求.py</summary> ``` # test01_get請求.py ''' 目標:Get請求方法演練 案例:http://www.baidu.com 請求: 1.請求方法:GET 響應 2.響應對象.url # 獲取請求ur1 3.響應對象.status_code # 獲取響應狀態碼 4.響應對象.text # 以文本形式顯示響應內容 ''' # 1.導包 import requests # 2.調用get url = "http://www.baidu.com" r = requests.get(url) # r為響應數據對象 # 3.獲取請求url地址 print("請求url:", r.url) # 4.獲取響應狀態碼 print("狀態碼:", r.status_code) # 5.獲取響應信息 文本形式 print("文本相應內容:", r.text) ``` </details> <br /> <br /> <details> <summary>test02_請求帶參.py</summary> ``` # test02_請求帶參.py ''' 目標:Get請求方法帶參演練 案例: 1. http://www.baidu.com?id=1001 2. http://www.baidu.com?id=1001,1002 3. http://www.baidu.com?id=1001&kw=北京 請求: 1.請求方法:GET 參數: params:字典或字符串 (推薦使用字典) 響應 2.響應對象.url # 獲取請求ur1 3.響應對象.status_code # 獲取響應狀態碼 4.響應對象.text # 以文本形式顯示響應內容 ''' # 1.導包 import requests # 2.調用get url = "http://www.baidu.com" # 不推薦寫法 靜態 # url = "http://www.baidu.com?id=1001" # 案例1 定義字典 params = {"id": 1001} # 案例1 字符串形式編寫 不推薦 # r = requests.get(url, params="id=1001") # 案例2 ''' params = {"id": [1001, 1002]} # 不推薦 params = {"id": "1001, 1002"} # %2c ASCII值為逗號 ''' # 案例3 params = {"id": 1001, "kw": "北京"} # 多個鍵值使用方式 # 請求是帶參 params r = requests.get(url, params=params) # r為響應數據對象 # r = requests.get(url) # r為響應數據對象 # 3.獲取請求url地址 print("請求url", r.url) # 4.獲取響應狀態碼 print("狀態碼", r.status_code) # 5.獲取響應信息 文本形式 print("文本相應內容:", r.text) ``` </details> <br /> <br /> **3.2 POST方法** 作用:新增資源 <details> <summary>test03_post請求.py</summary> ``` # test03_post請求.py ''' 目標: requests庫post方法使用 案例:新增學院 參數: 1.json:傳入json字符串 2. headers傳入請求信息頭內容 響應: 1.響應對象.json() ''' # 1.導包 import requests # 2.調用post # 請求url url = "http://127.0.0.1:8000/api/departments" # 請求headers headers = {"Content-Type":"application/json"} # 請求josn data = { "data": [{ "dep_id": "T01", "dep_name": "Test學院", "master_name": "Test-Master", "slogan": "Here is slogan" }] } r = requests.post(url, json=data, headers=headers) # 3.獲取響應對象 print(r.json()) # 4.獲取響應狀態碼 print(r.status_code) ``` </details> <br /> <br /> ``` 擴展: data與json區別: data:字典對象 json:json字符串 ``` <details> <summary>test03_post請求擴展(參數data與json區別).py</summary> ``` # test03_post請求擴展(參數data與json區別).py ''' 目標: requests庫post方法使用 案例:新增學院 將字典對象轉換為json字符串: 1. 導入json 2. dumps(dict) 參數: 1. json:傳入json字符串 2. headers傳入請求信息頭內容 響應: 1.響應對象.json() ''' # 1.導包 import requests import json # 2.調用post # 請求url url = "http://127.0.0.1:8000/api/departments" # 請求headers headers = {"Content-Type":"application/json"} # 請求josn data = { "data": [{ "dep_id": "T01", "dep_name": "Test學院", "master_name": "Test-Master", "slogan": "Here is slogan" }] } # 使用json方式來新增學院--->成功 r = requests.post(url, json=data, headers=headers) # 使用data方式來新增學院 -->失敗 # 注意:對于 python字典和json雖然長得一樣,但是數據序列化格式還是有一定的區別 r = requests.post(url, data=data, headers=headers) # 將字典對象轉為json字符串 r = requests.post(url, data=json.dumps(data), headers=headers) # 3.獲取響應對象 print(r.json()) # 4.獲取響應狀態碼 print(r.status_code) ``` </details> <br /> <br /> ``` 響應數據json()與text區別 json():返回類型字典,可以通過鍵名來獲取響應的值 text:返回的類型為字符串,無法通過鍵名來獲取響應的值 提示:共同點長得都像字典 ``` <details> <summary>03_post擴展(響應對象.text與響應對象.json()區別).py</summary> ``` # 03_post擴展(響應對象.text與響應對象.json()區別).py ''' 目標: requests庫post方法使用 響應對象.text與響應對象.json()區別 案例:新增學院 參數: 1.json:傳入json字符串 2. headers傳入請求信息頭內容 響應: 1.響應對象.json() ''' # 1.導包 import requests import json # 2.調用post # 請求url url = "http://127.0.0.1:8000/api/departments" # 請求headers headers = {"Content-Type":"application/json"} # 請求josn data = { "data": [{ "dep_id": "T01", "dep_name": "Test學院", "master_name": "Test-Master", "slogan": "Here is slogan" }] } # 使用json方式來新增學院--->成功 r = requests.post(url, json=data, headers=headers) # 使用data方式來新增學院 -->失敗 # 注意:對于 python字典和json雖然長得一樣,但是數據序列化格式還是有一定的區別 r = requests.post(url, data=data, headers=headers) # 將字典對象轉為jsOn字符串 r = requests.post(url, data=json.dumps(data), headers=headers) # 3-1. 獲取響應對象 json形式 r_json = r.json() print("r_json:", r_json) print("r_json類型為:", type(r_json)) print("r_json通過鍵名獲取值:", r_json['already_exist']) # 3-2. 獲取響應對象 text形式 r_text = r.text print("r_text:", r_text) print("r_text類型為:", type(r_text)) # 預期結果 報錯 因為字符串沒有鍵名一說 print("r_text通過鍵名獲取值:", r_text['alreadt_exist']) # 3.獲取響應對象 print(r.json()) # 4.獲取響應狀態碼 print(r.status_code) ``` </details> <br /> <br /> **3.3 PUT方法** 作用:更新資源 <details> <summary>test04_put請求.py</summary> ``` # test04_put請求.py ''' 目標: requests庫put方法使用 案例:新增學院 修改name 將字典對象轉換為json字符串: 1.導入json 2. dumps(dict) 參數: 1.json:傳入json字符串 2. headers傳入請求信息頭內容 響應: 1.響應對象.json() ''' # 1.導包 import requests # 2.調用post # 請求url url = "http://127.0.0.1:8000/api/departments/TT702" # 請求headers headers = {"Content-Type":"application/json"} # 請求josn data = { "data": [{ "dep_id": "T01", "dep_name": "TestTT702ipdate學院", "master_name": "Test-Master", "slogan": "Here is slogan" }] } # 使用json方式來新增學院--->成功 r = requests.put(url, json=data, headers=headers) # 使用data方式來新增學院 -->失敗 # 注意:對于 python字典和json雖然長得一樣,但是數據序列化格式還是有一定的區別 r = requests.post(url, data=data, headers=headers) # 將字典對象轉為jsOn字符串 r = requests.post(url, data=json.dumps(data), headers=headers) # 3.獲取響應對象 print(r.json()) # 4.獲取響應狀態碼 print(r.status_code) ``` </details> <br /> <br /> **3.4 DELETE方法** 作用:刪除資源 ``` ''' 目標: requests庫put方法使用 案例:刪除新增學院 響應: 響應狀態碼:204 ''' # 1.導包 import requests # 2.調用delete # 請求url url = "http://127.0.0.1:8000/api/departments/TT702" r = requests.delete(url) # 4.獲取響應狀態碼 print(r.status_code) ``` <br /> ### **響應內容** ``` response.status_code 狀態碼 response.url 請求url response.encoding 查看響應頭部字符編碼 response.headers 頭信息 response.cookies cookie信息 response.text 文本形式的響應內容 response.content 字節形式的響應內容 response.json() json形式的響應內容 ``` <details> <summary>06_響應對象方法(encoding).py</summary> ``` # 06_響應對象方法(encoding).py ''' 目標:響應對象常用方法 1. encoding 1)·獲取請求編碼 2).設置響應編碼 2. headers 1).獲取響應信息頭信息 案例http://www.baidu.com ''' # 1.導包 import requests # 2.調用get方法 url = "http://www.baidu.com" r = requests.get(url) # 3.查看默認請求編碼 ISO-8859-1 print(r.encoding) # 3-1 設置響應編碼 r.encoding = "utf-8" # 4.查看相應內容 text形式 print(r.text) # 5.查看響應信息頭 # 提示:headers信息比較重要(項目工作中一般服務器返回的token\session相關信息都在headers中) print(r.headers) ``` </details> <br /> <details> <summary>07_響應對象方法(cookies).py</summary> ``` # 07_響應對象方法(cookies).py ''' 目標:響應對象常用方法 1. cookies 1).獲取響應 cookies信息 2. content 1).以字節碼形式獲取響應信息(圖片、視頻.多媒體格式) 案例: cookies:http://www.baidu.com content:https://www.baiducom/img/bdlogol.png?where=super ''' # 1.導包 import requests # 2.調用get url = "http://www.baidu.com" r = requests.get(url) # 百度logo url_img = "https://www.baiducom/img/bdlogol.png?where=super" r = requests.get(url_img) ''' # 3.獲取響應cookies print("cookies信息為:", r.cookies) # 通過鍵名獲取響應的cookies值 print("cookies信息為:", r.cookies['BDORZ']) # 以text文本形式解析圖片 -->亂碼 print(r.text) ''' # 以字節碼形式解析圖片 print(r.content) # 將圖片寫入當前目錄baidu.png with open("./baidu.png", "wb") as f: f.write(r.content) ``` </details> <br />
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看