欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

1、為什么要寫(xiě)代碼實(shí)現(xiàn)接口自動(dòng)化

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

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

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

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

無(wú)法測(cè)試加密接口

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

擴(kuò)展能力不足

當(dāng)我們?cè)谙硎芄ぞ咚鶐?lái)的便利的同時(shí),往往也會(huì)受制于工具所帶來(lái)的局限。例如,我想將測(cè)試結(jié)果生 成 HMTL 格式測(cè)試報(bào)告,我想將測(cè)試報(bào)告發(fā)送到指定郵箱。我想對(duì)接口測(cè)試做定時(shí)任務(wù)。我想對(duì)接口測(cè)試做持續(xù)集成。這些需求都是工具難以實(shí)現(xiàn)的。

2、接口自動(dòng)化測(cè)試設(shè)計(jì)

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

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

一般的 接口工具 測(cè)試過(guò)程:

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

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

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

4、人工或通過(guò)工具的斷言功能檢查接口測(cè)試的正確性。

接口自動(dòng)化測(cè)試項(xiàng)目,為了使接口測(cè)試對(duì)數(shù)據(jù)變得可控,測(cè)試過(guò)程如下:

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

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

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

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

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

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

2、requests庫(kù)

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


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

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

3、接口測(cè)試代碼示例

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

為什么開(kāi)發(fā)接口?開(kāi)發(fā)的接口主要給誰(shuí)來(lái)用?

前端和后端分離是近年來(lái) Web 應(yīng)用開(kāi)發(fā)的一個(gè)發(fā)展趨勢(shì)。這種模式將帶來(lái)以下優(yōu)勢(shì):

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

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

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

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

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

# 添加發(fā)布會(huì)接口實(shí)現(xiàn)
def add_event(request):
  eid = request.POST.get('eid','')         # 發(fā)布會(huì)id
  name = request.POST.get('name','')        # 發(fā)布會(huì)標(biāo)題
  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ā)布會(huì)時(shí)間

  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'})

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

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

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司