日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

接口自动化框架

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 接口自动化框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接口自動化框架講解

  • 框架結構

接口測試框架的結構如下圖所示:

接口測試框架的結構說明:

- API用于封裝被測系統的接口(用requests模塊封裝的請求方法)

- TestCase將一個或多個接口封裝成測試用例,并使用UnitTest管理測試用例 TestCase可以

調用數據庫進行數據的校驗

- 為了方便維護測試數據,可以把測試腳本和測試數據分離開

- 通過UnitTest斷言接口返回的數據,并生成測試報告

  • 框架目錄結構

  • 封裝TPShop登錄接口案例

按照功能模塊定義封裝被測系統的接口,方便測試腳本的調用,并且能夠達到代碼的復用。對登錄功能的相關接口進行封裝,

示例代碼:

在login文件中寫入: class LoginApi(object): # 初始化 def __init__(self): self.verify_code_url = "xxxx" self.login_url = "yyyy" # 登錄過程 # 1.獲取驗證碼 # 2.填寫必要數據:用戶名,密碼,驗證碼 # 3.點擊登錄按鈕 def get_login_verify_code(self,session): return session.get(self.verify_code_url) def login(self,session,username,password,verify_code): data = { "username":username, "password":password, "verify_code":verify_code }

  • 登錄測試用例

將api模塊中的一個或多個接口封裝成一個測試用例,并使用測試框架UnitTest管理測試用例。定義登錄功能的測試用例。示例代碼:

在logintestcase文件中寫入: import unittest from requests import Session from api.login import LoginApi class LoginTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.login_api = LoginApi() def setUp(self) -> None: self.session = Session() def tearDown(self) -> None: self.session.close() def test_login_success(self): # 請求驗證碼 response = self.login_api.get_login_verify_code(self.session) self.assertIn("image",response.headers.get("Content-Type")) # 驗證碼識別:略,8888 # 調用登錄方法,發送請求,獲取響應數據 res = self.login_api.login(self.session,"13800000002","123456","8888") res = res.json() # 斷言 self.assertEqual(200,res.status_code) self.assertEqual(1,res.get("status"))

  • 集成測試報告

使用HTMLTestRunner生成HTML格式的測試報告

注意:需要將HTMLTestRunner.py文件放置在lib中

在run_suite文件寫入: import unittest from scripts import logintestcase from lib.HTMLTestRunner import HTMLTestRunner suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(logintestcase.LoginTest)) f = open('D:/JySoft/P6/P6-Django/apiTestFramework/report/report.html','wb') runner = HTMLTestRunner(stream=f,title="asdadf",description="cdsbhucv")

運行run_suite,結果為

參數化處理

  • 參數化分析

  • 構建json文件存放測試數據

[ { "username": "15097142681", "password": "13579", "verify_code": "8888", "status": 0, "msg": "賬號或密碼錯誤" }, { "username": "", "password": "13579", "verify_code": "8888", "status": 0, "msg": "賬號或密碼錯誤" }, { "username": "15097142681", "password": "", "verify_code": "8888", "status": 0, "msg": "賬號或密碼錯誤" }

  • 構建參數化數據

def build_data(): with open('../data/data.json','r',encoding='utf-8') as f: content = f.read() data = json.loads(content) d = [] for item in data: d.append((item["username"],item["password"],item["verify_code"],item["status"],item["msg"]))

  • 測試用例實現參數化

# 導包 from parameterized import parameterized class LoginTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.login_api = LoginApi() def setUp(self) -> None: self.session = Session() def tearDown(self) -> None: self.session.close() @parameterized.expand(build_data) def test_login_success(self,username,password,verify_code,status,msg): # 請求驗證碼 response = self.login_api.get_login_verify_code(self.session) self.assertIn("image",response.headers.get("Content-Type")) # 驗證碼識別:略,8888 # 調用登錄方法,發送請求,獲取響應數據 res = self.login_api.login(self.session,username,password,verify_code) res = res.json() # 斷言 self.assertEqual(200,res.status_code) self.assertEqual(status,res.get("status"))

db數據承載形式實現參數化

  • 構建數據庫數據

執行SQL腳本,將數據寫入數據庫中

  • 修改構建數據函數

def build_data(): # 獲取數據庫的數據 sql = "select * from t_login" db_data = DBUtil.exe_sql(sql) test_data = [] for case_data in db_data: username = case_data[2] password = case_data[3] verify_code = case_data[4] status_code = case_data[5] content_type = case_data[6] status = case_data[7] msg = case_data[8] test_data.append((username,password,verify_code,status_code,content_type,status,msg)) print(test_data)

總結

以上是生活随笔為你收集整理的接口自动化框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。