您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python+requests如何實現接口自動化的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
利用python和第三方庫requests進行接口自動化測試(python+requests)
第三方庫requests簡單介紹
Requests 是用Python語言編寫,基于 urllib,采用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,可以節約我們大量的工作,完全滿足 HTTP 測試需求。更重要的一點是它支持 Python3 。
大概步驟
Request是第三方庫,需要手動安裝:CMD安裝即可----命令:pip install requests
在pycharm先導入requests第三方庫,代碼—import requests
發送請求—http.get請求:requests.get(‘https://api.github.com/events’)
發送請求—http.post請求:requests.post(‘http://httpbin.org/post’, data = {‘key’:‘value’})
構建URL參數等
結合Python進行返回參數進行驗證
運行即可(請求失敗可抓包查看發送參數是否有誤)
詳細介紹
以下主要介紹兩種常用http請求:get和post,以及delete
下圖為本次編寫代碼測試的用例
具體代碼:
第一步:安裝完后直接導入requests使用
#導入requests
import requests
第二步:利用Python+requests編寫代碼構建請求
#登錄接口--post請求
這里需要注意,除了返回接口內容,還需要返回cookies,因為后面的操作需要用到登錄身份標識
def Login(user,passw):
payload = {
'username': test,
'password': 123456
}
# data參數 就是構造消息體的
response = requests.post("http://localhost/XXXX",
data=payload)
# 獲取結果,返回給調用者
retDict = response.json()
# 在控制臺打印出結果
print(retDict)
#返回結果,調用時需要用到
return retDict, response.cookies
#添加課程接口--post請求
這里需要注意,請求參數需要加上cookies,因為后面的操作需要用到登錄身份標識
def add_course(action,name,desc,dis,sessionid):
re={'action':action,
'data':'''
{
"name": "%s",
"desc": "%s",
"display_idx": "%s"
}
'''% (name,desc,dis)
}
rs=requests.post("http://localhost/XXXX",data=re,cookies={'sessionid': sessionid})
re=rs.json()
print(re)
return re
#列出課程接口--get請求
def list_course(sessionid):
parm={
'action' :'list_course',
'pagenum':1,
'pagesize':20
}
# he = {"Content-Type": "application/json"}
rs=requests.get("http://localhost/XXXX",params=parm,cookies={'sessionid': sessionid})
liechu=rs.json()
print(liechu)
return liechu
#刪除課程接口--delete請求
def delete_course(courseid,sessionid):
payload = {
'action': 'delete_course',
'id': f'{courseid}'
}
response = requests.delete("http://localhost/XXXX/",
data=payload,
cookies={'sessionid': sessionid})
r = response.json()
pprint.pprint(r)
return r無錫婦科醫院 http://www.bhnfk.com
第三步:利用Python對requests返回的參數進行驗證
#因為這塊代碼是新建了另一個Python文件編寫。所以這里需要先導入上面的Python文件才可以調用里面的函數
from jiakouzudonghua import aba
#導入隨機數函數
import random
# 利用寫好的登錄接口進行登錄
# loginRet保存登錄接口返回是否登錄成功的參數,cookies保存登錄成功返回的cookie
loginRet,cookies = aba.Login('auto','sdfsdfsdf')
#使用if判斷是否登錄成功,可直接使用assert驗證
if loginRet["retcode"] == 0:
print('登錄成功')
else:
print('登錄失敗')
# 記錄下sessionid
sessionid =cookies['sessionid']
#這里課程使用了隨機數,最大程度確保每次運行不會創建到同名課程
classname=('課程'+str(random.randint(0,99999999999)))
# 第一次先列出課程,為后面比較做準備
coureListBefore = list_course(sessionid)['retlist']
# 添加一門課程,且使用assert進行驗證,對則不會反悔信息,錯則返回錯誤信息
retDict = add_course('classname','php語言','2',sessionid)
assert retDict['retcode'] == 0
#也可用if進行驗證
# if retDict['retcode'] == 0:
# print('添加課程成功')
# else:
# raise Exception('添加課程失敗')
# 第二次再列出課程
coureListAfter = list_course(sessionid)['retlist']
#使用len計算添加課程前和添加課程后的課程數量,然后相減等于1則證明成功,也可直接取返回的課程數量total進行驗證
createCount = len(coureListAfter) - len(coureListBefore)
assert createCount == 1
# 取出,多出來的一門課程對象
newcourse = None
for one in coureListAfter:
if one not in coureListBefore:
newcourse = one
break
# 檢查是否是剛剛添加的課程
assert newcourse!=None
assert newcourse['name']=='classname'
assert newcourse['desc']=='php語言'
assert newcourse['display_idx']==2
# 清除環境操作,刪除剛剛添加的課程
delete_course(newcourse['id'],sessionid)
print('\n========= test case pass =============')
得出控制臺運行結果。
感謝各位的閱讀!關于“python+requests如何實現接口自動化”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。