Python+request+unittest實現(xiàn)接口測試框架集成實例-創(chuàng)新互聯(lián)

1、為什么要寫代碼實現(xiàn)接口自動化

創(chuàng)新互聯(lián)是網(wǎng)站建設技術企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設,網(wǎng)站設計,網(wǎng)站制作,網(wǎng)站改版等技術服務。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10年品質(zhì),值得信賴!

大家知道很多接口測試工具可以實現(xiàn)對接口的測試,如postman、jmeter、fiddler等等,而且使用方便,那么為什么還要寫代碼實現(xiàn)接口自動化呢?工具雖然方便,但也不足之處:

測試數(shù)據(jù)不可控制

接口測試本質(zhì)是對數(shù)據(jù)的測試,調(diào)用接口,輸入一些數(shù)據(jù),隨后,接口返回一些數(shù)據(jù)。驗證接口返回數(shù)據(jù)的正確性。在用工具運行測試用例之前不得不手動向數(shù)據(jù)庫中插入測試數(shù)據(jù)。這樣我們的接口測試是不是就沒有那么“自動化了”。

無法測試加密接口

這是接口測試工具的一大硬傷,如我們前面開發(fā)的接口用工具測試完全沒有問題,但遇到需要對接口參 數(shù)進行加密/解密的接口,例如 md5、base64、AES 等常見加密方式。本書第十一章會對加密接口進行介紹。 又或者接口的參數(shù)需要使用時間戳,也是工具很難模擬的。

擴展能力不足

當我們在享受工具所帶來的便利的同時,往往也會受制于工具所帶來的局限。例如,我想將測試結果生 成 HMTL 格式測試報告,我想將測試報告發(fā)送到指定郵箱。我想對接口測試做定時任務。我想對接口測試做持續(xù)集成。這些需求都是工具難以實現(xiàn)的。

2、接口自動化測試設計

接口測試調(diào)用過程可以用下圖概括,增加了測試數(shù)據(jù)庫

Python+request+unittest實現(xiàn)接口測試框架集成實例

一般的 接口工具 測試過程:

1、接口工具調(diào)用被測系統(tǒng)的接口(傳參 username="zhangsan")。

2、系統(tǒng)接口根據(jù)傳參(username="zhangsan")向 正式數(shù)據(jù)庫 中查詢數(shù)據(jù)。

3、將查詢結果組裝成一定格式的數(shù)據(jù),并返回給被調(diào)用者。

4、人工或通過工具的斷言功能檢查接口測試的正確性。

接口自動化測試項目,為了使接口測試對數(shù)據(jù)變得可控,測試過程如下:

1、接口測試項目先向 測試數(shù)據(jù)庫 中插入測試數(shù)據(jù)(zhangsan 的個人信息)。

2、調(diào)用被測系統(tǒng)接口(傳參 username="zhangsan")。

3、系統(tǒng)接口根據(jù)傳參(username="zhangsan")向測試數(shù)據(jù)庫中進行查詢并得到 zhangsan 個人信息。

4、將查詢結果組裝成一定格式的數(shù)據(jù),并返回給被調(diào)用者。

5、通過單元測試框架斷言接口返回的數(shù)據(jù)(zhangsan 的個人信息),并生成測試報告。

為了使正式數(shù)據(jù)庫的數(shù)據(jù)不被污染,建議使用獨立的 測試數(shù)據(jù)庫 。

2、requests庫

Requests 使用的是 urllib3,因此繼承了它的所有特性。Requests 支持 HTTP 連接保持和連接池 ,支持 使用cookie保持會話 ,支持 文件上傳 ,支持 自動確定響應內(nèi)容的編碼。 對request庫的更詳細的介紹可以看我之前接口測試基礎的文章:


https://www.jb51.net/article/122571.htm?pc

https://www.jb51.net/article/108168.htm

3、接口測試代碼示例

下面以之前用 python+django 開發(fā)的用戶簽到系統(tǒng)為背景,展示接口測試的代碼。

為什么開發(fā)接口?開發(fā)的接口主要給誰來用?

前端和后端分離是近年來 Web 應用開發(fā)的一個發(fā)展趨勢。這種模式將帶來以下優(yōu)勢:

1、后端可以不用必須精通前端技術(HTML/JavaScript/CSS),只專注于數(shù)據(jù)的處理,對外提供 API 接口。

2、前端的專業(yè)性越來越高,通過 API 接口獲取數(shù)據(jù),從而專注于頁面的設計。

3、前后端分離增加接口的應用范圍,開發(fā)的接口可以應用到 Web 頁面上,也可以應用到移動 APP 上。

在這種開發(fā)模式下,接口測試工作就會變得尤為重要了。

開發(fā)實現(xiàn)的接口代碼示例:

# 添加發(fā)布會接口實現(xiàn)
def add_event(request):
  eid = request.POST.get('eid','')         # 發(fā)布會id
  name = request.POST.get('name','')        # 發(fā)布會標題
  limit = request.POST.get('limit','')       # 限制人數(shù)
  status = request.POST.get('status','')      # 狀態(tài)
  address = request.POST.get('address','')     # 地址
  start_time = request.POST.get('start_time','')  # 發(fā)布會時間

  if eid =='' or name == '' or limit == '' or address == '' or start_time == '':
    return JsonResponse({'status':10021,'message':'parameter error'})

  result = Event.objects.filter(id=eid)
  if result:
    return JsonResponse({'status':10022,'message':'event id already exists'})

  result = Event.objects.filter(name=name)
  if result:
    return JsonResponse({'status':10023,'message':'event name already exists'})

  if status == '':
    status = 1

  try:
    Event.objects.create(id=eid,name=name,limit=limit,address=address,status=int(status),start_time=start_time)
  except ValidationError:
    error = 'start_time format error. It must be in YYYY-MM-DD HH:MM:SS format.'
    return JsonResponse({'status':10024,'message':error})

  return JsonResponse({'status':200,'message':'add event success'})

當前題目:Python+request+unittest實現(xiàn)接口測試框架集成實例-創(chuàng)新互聯(lián)
文章起源:http://bm7419.com/article38/ijosp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站小程序開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)頁設計公司外貿(mào)建站、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司