文章目錄
- 前言
- 一、實現登錄接口對象封裝和調用
- ? ? ? 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")