【接口自動化測試】第三節.實現項目核心業務接口自動化

文章目錄

  • 前言
  • 一、實現登錄接口對象封裝和調用
  • ? ? ? 1.0?登錄接口的接口測試文檔
  • ? ? ? 1.1 接口對象層(封裝)
  • ? ? ? 1.2 測試腳本層(調用)
  • 二、課程新增接口對象封裝和調用
  • ? ? ? 2.0?課程新增接口的接口測試文檔
  • ? ? ? 2.1 接口對象層(封裝)
  • ? ? ? 2.2 測試腳本層(調用)
  • 三、合同上傳接口對象封裝和調用
  • ? ? ? 3.0?合同上傳的接口測試文檔
  • ? ? ? 3.1 接口對象層(封裝)
  • ? ? ? 3.2 測試腳本層(調用)
  • 四、合同新增接口對象封裝和調用
  • ? ? ? 2.0?合同新增接口的接口測試文檔
  • ? ? ? 2.1 接口對象層(封裝)
  • ? ? ? 2.2 測試腳本層(調用)
  • 總結


前言


一、實現登錄接口對象封裝和調用

1.0?登錄接口的接口測試文檔

接口信息:
1.驗證碼:
(1)地址:http://kdtx-test.itheima.net/api/captchaImage
(2)方法:get

2.登錄:
(1)地址:http://kdtx-test.itheima.net/api/login
(2)方法:Post
(3)請求數據:
(4)請求頭:Content-Type: application/json
(5)請求體:{"username": "admin", "password": " admin123","code":"2", "uuid":"驗證碼接口返回數據"}

1.1 接口對象層(封裝)

封裝的重要概念:
接口封裝時,重點是依據接口文檔封裝接口信息,需要使用的測試數據是從測試用例傳遞的、接口方法被調用時需要返回對應的響應結果。

封裝是通過根據接口API文檔封裝,所以定義在API的目錄下。


實現的基本步驟:
(1)導包操作:

# 導包
import requests

(2)創建接口的類:

# 創建接口類
class LoginAPI:

(3)創建初始化方法:

初始化方法中需要指定接口的基本信息url。

# 初始化def __init__(self):# 指定url基本信息self.url_verify = "http://kdtx-test.itheima.net/api/captchaImage"self.url_login = "http://kdtx-test.itheima.net/api/login"

(4)創建驗證碼、登錄方法:

接口方法被調用時候,需要返回對應的響應結果信息。只有返回之后,才能在測試用例中使用倒響應結果的值。

    # 驗證碼接口方法def get_verify_code(self):return requests.get(url=self.url_verify)# 登錄接口方法def login(self, test_data):return requests.post(url=self.url_login, json=test_data)

備注:

(1)登錄接口方法中的test_data。

因為要從外部傳入測試數據,所以在方法定義時候創建一個參數來接收傳遞的數據。

(2)json = test_data

此處數據是請求體json中的數據。

因為json數據的請求體在request格式中是通過json參數進行處理。即:json = test_data.


實現圖示說明:


1.2 測試腳本層(調用)

測試腳本層說明:

  • 重點關注測試數據準備和斷言
  • 重點關注業務流程的處理
  • 直接調用接口對象層發送請求

實現的基本步驟:

(1)導包:
導入調用接口對象層中定義的登錄接口api.login

# 導包
from api.login import LoginAPI
import pytest

(2)創建測試類:
測試類一般以Test開頭進行命名。

# 創建測試類
class TestLoginAPI:

(3)設置前置處理和后置處理

前置處理中先實例化一個登錄接口的對象

 # 前置處理def setup(self):# 實例化接口對象self.login_api = LoginAPI()# 后置處理def teardown(self):pass

(4)創建登錄成功方法,并實現獲取驗證碼和登錄操作

# 1、登錄成功def test01_login_success(self):# 獲取驗證碼res_v = self.login_api.get_verify_code()print(res_v.status_code)print(res_v.json())# 打印uuid數據print(res_v.json().get("uuid"))# 登錄login_data = {"username": "admin","password": "HM_2023_test","code": "2","uuid": res_v.json().get("uuid")# 此處調用驗證碼中的uuid數據}res_l = self.login_api.login(test_data=login_data)print(res_l.status_code)print(res_l.json())

實例圖示說明:


輸出結果:


二、課程新增接口對象封裝和調用

2.0?課程新增接口的接口測試文檔

接口信息:
(1)URL:http://kdtx-test.itheima.net/api/clues/course
(2)方法:Post
(3)請求數據:
(4)請求頭:{ "Content-Type ": "application/json ", "Authorization": "xxx " }
(5)請求體:{ "name": "測試開發提升課01", "subject": "6","price": 899,"applicablePerson": "2", "info": "測試開發提升課01"}

2.1 接口對象層(封裝)

封裝的重要概念:
接口封裝時,重點是依據接口文檔封裝接口信息,需要使用的測試數據是從測試用例傳遞的、接口方法被調用時需要返回對應的響應結果。

封裝是通過根據接口API文檔封裝,所以定義在API的目錄下。


實現的基本步驟:
(1)導包操作:

# 導包
import requests

(2)創建接口的類:

# 創建接口類
class CourseAPI:

(3)創建初始化方法:

初始化方法中需要指定接口的基本信息url。

# 初始化def __init__(self):# 指定url基本信息self.url_add_course = "http://kdtx-test.itheima.net/api/clues/course"

(4)創建課程添加方法:

接口方法被調用時候,需要返回對應的響應結果信息。只有返回之后,才能在測試用例中使用倒響應結果的值。

此處方法中定義了test_data, token都是需要從外部接收的數據,所以最終的返回里面也要有響應結果的值。如test_data是json格式的,token是headers格式中的數據。

 def add_course(self, test_data, token):return requests.post(url=self.url_add_course, json=test_data, headers={"Authorization": token})

2.2 測試腳本層(調用)

實現的基本步驟:

(1)導包:
導入調用接口對象層中定義的登錄接口api.login

# 導包
import pytest
from api.course import CourseAPI

(2)創建測試類:
測試類一般以Test開頭進行命名。

# 創建測試類
class TestContractBusiness:# 初始化token = None

(3)設置前置處理和后置處理

前置處理中先實例化一個登錄接口的對象

 # 前置處理def setup(self):# 實例化接口對象 self.course_api = CourseAPI()# 后置處理def teardown(self):pass

(4)創建課程新增方法,并實現課程新增操作

# 2、課程新增成功def test02_add_course(self):add_data = {"name": "測試開發提升課01", "subject": "6", "price": 899, "applicablePerson": "2","info": "測試開發提升課01"}response = self.course_api.add_course(test_data=add_data, token=TestContractBusiness.token)
        # 提取登錄成功之后的token數據并保存在類的屬性中TestContractBusiness.token = res_l.json().get("token")

三、合同上傳接口對象封裝和調用

3.0?合同上傳的接口測試文檔

接口信息:
(1)URL: http://kdtx-test.itheima.net/api/common/upload
(2)方法:Post
(3)請求數據:
(4)請求頭:{ "Content-Type ": " multipart/form-data ", "Authorization": "xxx " }
(5)請求體:{" file " : 合同文件"}
思考:
① 如何提交multipart/form-data數據?
通過使用:
requests.請求方法(url, data=None, json =None, headers=None, files =None)
步驟① 讀取文件數據
f = open(" test.pdf ", " rb ")
步驟② 設置請求數據
response = requests.post(url=xxx, files= {" file " : f"})

3.1 接口對象層(封裝)

實現的基本步驟:
(1)導包操作:

# 導包
import requests

(2)創建接口的類:

# 創建接口類
class ContractAPI:

(3)創建初始化方法:

初始化方法中需要指定接口的基本信息url。

 # 初始化def __init__(self):self.url_upload = "http://kdtx-test.itheima.net/api/common/upload"

(4)創建課程添加方法:

接口方法被調用時候,需要返回對應的響應結果信息。只有返回之后,才能在測試用例中使用倒響應結果的值。

 # 合同上傳接口def upload_contract(self, test_data, token):return requests.post(url=self.url_upload, files={"file": test_data}, headers={"Authorization":  token})

3.2 測試腳本層(調用)

實現的基本步驟:

(1)導包:
導入調用接口對象層中定義的登錄接口api.login

# 導包
import pytest
from api.contract import ContractAPI

(2)創建測試類:
測試類一般以Test開頭進行命名。

# 創建測試類
class TestContractBusiness:# 初始化token = None

(3)設置前置處理和后置處理

前置處理需要先處理驗證碼獲取和登錄接口操作,依次為前提才能進行文件上傳。

 # 前置處理def setup(self):# 實例化接口對象self.login_api = LoginAPI()self.course_api = CourseAPI()self.contract_api = ContractAPI()# 1、登錄成功def test01_login_success(self):# 獲取驗證碼res_v = self.login_api.get_verify_code()print(res_v.status_code)print(res_v.json())# 打印uuid數據print(res_v.json().get("uuid"))# 登錄login_data = {"username": "admin","password": "HM_2023_test","code": "2","uuid": res_v.json().get("uuid")}res_l = self.login_api.login(test_data=login_data)print(res_l.status_code)print(res_l.json())# 提取登錄成功之后的token數據并保存在類的屬性中TestContractBusiness.token = res_l.json().get("token")print(TestContractBusiness.token)# 后置處理def teardown(self):pass

(4)創建合同上傳方法,并實現合同上傳操作

 # 3、上傳合同成功def test03_upload_contract(self):# 讀取pdf文件數據f = open("../data/test.pdf", "rb")response = self.contract_api.upload_contract(test_data=f, token=TestContractBusiness.token)print(response.json())

?四、合同新增接口對象封裝和調用

2.0?合同新增接口的接口測試文檔

接口信息:
新增合同:
(1)url地址:http://kdtx-test.itheima.net/api/contract
(2)方法:Post
(3)請求數據:
(4)請求頭:{ "Content-Type ": "application/json ", "Authorization": "xxx " }
(5)請求體:{ "name": "測試888", "phone": "13612345678", "contractNo": "HT10012003",
"subject": "6", "courseId": " 99", "channel": "0", "activityId": 77, "fileName": "xxx"}

2.1 接口對象層(封裝)

封裝的重要概念:
接口封裝時,重點是依據接口文檔封裝接口信息,需要使用的測試數據是從測試用例傳遞的、接口方法被調用時需要返回對應的響應結果。

封裝是通過根據接口API文檔封裝,所以定義在API的目錄下。


實現的基本步驟:
(1)導包操作:

# 導包
import requests

(2)創建接口的類:

# 創建接口類
class ContractAPI:

(3)創建初始化方法:

初始化方法中需要指定接口的基本信息url。

 # 初始化def __init__(self):self.add_contrat = "http://kdtx-test.itheima.net/api/contract"

(4)創建合同添加方法:

接口方法被調用時候,需要返回對應的響應結果信息。只有返回之后,才能在測試用例中使用倒響應結果的值。

此處方法中定義了test_data, token都是需要從外部接收的數據,所以最終的返回里面也要有響應結果的值。如test_data是json格式的,token是headers格式中的數據。

# 新增合同接口def add_contract(self,test_data,token):return requests.post(url=self.add_contrat,json=test_data,headers={"Authorization":  token})

2.2 測試腳本層(調用)

實現的基本步驟:

(1)導包:
導入調用接口對象層中定義的登錄接口api.login

# 導包
import pytest
from api.contract import ContractAPI

(2)創建測試類:
測試類一般以Test開頭進行命名。

# 創建測試類
class TestContractBusiness:# 初始化token = None

(3)設置前置處理和后置處理

前置處理中先實例化一個登錄接口的對象

 # 前置處理def setup(self):# 實例化接口對象 self.contract_api = ContractAPI()# 后置處理def teardown(self):pass

(4)創建課程新增方法,并實現課程新增操作

 # 4、新增合同成功def test04_add_contract(self):add_contract = {"name": "測試888","phone": "13612341888","contractNo": "HT20026194","subject": "6","courseId": 99,"channel": "0","activityId": 77,"fileName": "/profile/upload/2023/01/05/86e5a3b8-b08c-470c-a17d-71375c3a8b9f.pdf"}response = self.contract_api.add_contract(test_data=add_contract, token=TestContractBusiness.token)print(response.json())
        # 提取登錄成功之后的token數據并保存在類的屬性中TestContractBusiness.token = res_l.json().get("token")

總結

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

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

相關文章

AVL樹模擬

1.概念 雖然二叉搜索樹可以縮短查找的效率,但如果數據有序或者接近有序時二叉搜索樹樹將退化為單支樹,查找元素相當于在順序表中搜索元素,效率低下。AVL 樹是具有一下性質的二叉搜索樹: 1.它的左右子樹都是AVL樹 2.左右子…

Mac 如何安裝 wget

1.安裝 Homebrew2.安裝 wget3.檢測 wget 是否安裝成功 1.安裝 Homebrew 在安裝 wget 之前需要安裝一個適用于 mac 的包管理器 Homebrew,打開 mac 終端執行如下命令進行安裝: /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/h…

【Git】GitIgnore不生效

這里可能有兩種原因,一個沒有刷新Git緩存,二是Git忽略規則有問題 更新Git緩存 git rm -r --cached . git add . git commit -m "modify git ignore rule"Ignore規則 檢查下忽略文件的目錄表示是否正確 XXX忽略任意目錄下名為XXX的文件 …

新手第一個漏洞復現:MS17-010(永恒之藍)

文章目錄 漏洞原理漏洞影響范圍復現環境復現步驟 漏洞原理 漏洞出現在Windows SMB v1中的內核態函數srv!SrvOs2FeaListToNt在處理FEA(File Extended Attributes)轉換時。該函數在將FEA list轉換成NTFEA(Windows NT FEA)list前&am…

【Golang - 90天從新手到大師】Day14 - 方法和接口

一. go方法 go方法:在函數的func和函數名間增加一個特殊的接收器類型,接收器可以是結構體類型或非結構體類型。接收器可以在方法內部訪問。創建一個接收器類型為Type的methodName方法。 func (t Type) methodName(parameter list) {}go引入…

在 MATLAB 中顯示 3D 圖像

文章目錄 前言1. 曲面圖 (Surface Plot)2. 網格圖 (Mesh Plot)3. 散點圖 (Scatter Plot)4. 等值線圖 (Contour Plot) 前言 提示:這里可以添加本文要記錄的大概內容: 項目需要: 提示:以下是本篇文章正文內容,下面案例…

享元模式(設計模式)

享元模式(Flyweight Pattern)是一種結構型設計模式,它通過共享細粒度對象來減少內存使用,從而提高性能。在享元模式中,多個對象可以共享相同的狀態以減少內存消耗,特別適合用于大量相似對象的場景。 享元模…

解決“Duplicate keys detected: ‘ ‘.This may cause an update error.”問題

問題原因 出現“Duplicate keys detected”的錯誤,通常表示在v-for指令中使的:key綁定值有重復。 如果前端是靜態數據,一般能自我避免:key綁定值有重復。如果前端是綁定的動態數據,那么需要另外提供一個唯一的鍵。 在這個例子中&#xff0c…

【LeetCode】接雨水

目錄 一、題目二、解法完整代碼 一、題目 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 輸入:height [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋&#xff…

面向對象,常用類,集合,異常,JDBC,mysql數據庫內容的復習,

1,面向對象 面向對象與面向過程對比 面向過程:關注過程,適合解決簡單直接的問題,代碼結構以函數為單位,如C語言。 面向對象:關注類,適合解決復雜問題更加適合解決復雜的項目中的問題等等&…

跨平臺編程:在Conda中搭建R語言環境的終極指南

🌐 跨平臺編程:在Conda中搭建R語言環境的終極指南 🌐 在數據科學和統計分析領域,R語言以其強大的數據處理能力和豐富的圖形表示功能而廣受歡迎。然而,對于習慣了使用Linux操作系統的用戶來說,如何方便地在…

【UML用戶指南】-23-對高級行為建模-狀態機

目錄 1、概述 2、狀態 2.1、狀態的組成 3、轉移 3.1、轉移的組成 4、高級狀態和轉移 4.1、進入效應和退出效應 4.2、內部轉移 4.3、do活動 4.4、延遲事件 4.5、子狀態機 5、子狀態 5.1、非正交子狀態 5.2、歷史狀態 5.3、正交子狀態 6、分叉與匯合 7、主動對象…

GOROOT GOPATH GOPROXY GO111MODULE

GOROOT GOROOT代表Go的安裝目錄。可執行程序go(或go.exe)和gofmt(或gofmt.exe)位于 GOROOT/bin目錄中。 配置GOROOT環境變量,其值為Go的安裝目錄;然后在環境變量PATH中添加GOROOT/bin路徑。 注意:GOROOT變量只是代表了安裝目錄,不…

泛型的實際應用示例

泛型的實際應用示例 1. 集合框架中的泛型 在Java的集合框架中,泛型被廣泛使用以確保類型安全并減少運行時錯誤。以下是一個使用泛型ArrayList的示例: java import java.util.ArrayList; import java.util.List; public class GenericCollectionsExamp…

【面試題】信息系統安全運維要做什么

信息系統安全運維是確保信息系統穩定、可靠、安全運行的一系列活動和措施。 其主要包括以下幾個方面: 1.系統監控: 實時監測信息系統的運行狀態,如服務器的性能指標、網絡流量、應用程序的運行情況等。通過監控工具,及時發現系統…

企業數據治理的下一步是數據資產管理?

隨著信息技術的飛速發展和數字化轉型的深入推進,企業數據已成為驅動業務增長和創新的核心要素。當企業數據治理工作取得顯著成效后,如何進一步發揮數據的價值,實現數據資產的有效管理,成為企業面臨的重要課題。 數據治理的基石作用…

算法練習——函數、遞歸和遞推

在此記錄一些有關函數、遞歸和遞推的問題。所有題目均來自洛谷的題單能力提升綜合題單Part1 入門階段 - 題單 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) (實際上都沒有用遞推做) [NOIP2001 普及組] 數的計算 題目描述 給出正整數 n n n&#xf…

學習感悟丨在譽天學習數通HCIP怎么樣

大家好,我是譽天學員的徐同學,學習的數通HCIP課程。 在學校的時候,聽說下半年就要出去實習了,心中坎坷不安,現在我學到的知識遠遠不夠的。然后就想著學點東西充實一下自己的知識面和專業能力,有一次和同學談…

【漏洞復現】飛企互聯——SQL注入

聲明:本文檔或演示材料僅供教育和教學目的使用,任何個人或組織使用本文檔中的信息進行非法活動,均與本文檔的作者或發布者無關。 文章目錄 漏洞描述漏洞復現測試工具 漏洞描述 飛企互聯-FE企業運營管理平臺是一個基于云計算、智能化、大數據…

[圖解] 向量數據庫之何謂乘積量化器?

Product Quantization 在前面一節講解了向量數據庫索引相關的內容,那么本節將會講解其中壓縮方法的量化手段:乘積量化器。 簡單來說將向量的所有維度劃分為多個子空間,每個子空間一部分維度,然后每個子空間獨立去找最近距離。例如…