'''
使用python-requests 包進(jìn)行接口測(cè)試
1、構(gòu)造參數(shù)
2、發(fā)送請(qǐng)求
3、校驗(yàn)結(jié)果
'''
#加載包
import requests
#百度搜索的接口,搜索的內(nèi)容為requests
#url = "http://www.baidu.com/s?wd=requests"
#發(fā)送請(qǐng)求,將服務(wù)器返回的結(jié)果放到變量r中
#r = requests.get(url)
#打印文本格式的響應(yīng)體
#print(r.text)
#對(duì)結(jié)果進(jìn)行斷言,判斷關(guān)鍵字在不在結(jié)果中
#assert "Requests: 讓 HTTP 服務(wù)人類 — Requests 2.18.1 文檔" in r.text
#金融項(xiàng)目注冊(cè)接口的測(cè)試
#get請(qǐng)求的參數(shù)拼接到url的后面,
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register?mobilephone=12345&pwd=12345"
r = requests.get(url)
print(r.text)
print(r.json()) #如果相應(yīng)體是json格式的,使用r.json()
print(r.json()['code'])
assert r.json()['code'] == "20108"
assert r.json()['msg'] == "密碼長(zhǎng)度必須為6~18"
#get請(qǐng)求的參數(shù),使用params傳遞
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register"
cs = {
"mobilephone":"18012345678",
"pwd":"12345",
"regname":"hello"
}
r = requests.get(url,params=cs)
print(r.text)
assert r.json()['code'] == "20108"
assert r.json()['msg'] == "密碼長(zhǎng)度必須為6~18"
print("狀態(tài)碼",r.status_code)
print("狀態(tài)原因",r.reason)
print("響應(yīng)頭",r.headers)
print("cookies",r.cookies)
print("文本格式的響應(yīng)體",r.text)
print("請(qǐng)求頭",r.request.headers)
#新知天氣查詢天氣的接口
url = "https://api.seniverse.com/v3/weather/now.json?key=Sh-LsrOsCyo4vp8Tp&location=xian"
r = requests.get(url)
print(r.json())
#西安
print(r.json()['results'][0]['location']['name'],end='當(dāng)前溫度:')
#溫度
print(r.json()['results'][0]['now']['temperature'])
#分割線
print("*"*50)
#獲取用戶列表
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/list"
r = requests.get(url)
print(r.json())
print(r.request.headers) #‘’
#分割線
print("*" * 50)
hds = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 QQBrowser/9.3"
}
r = requests.get(url, headers=hds)
print(r.json())
print(r.request.headers)
'''
用requests 發(fā)送post請(qǐng)求
1.data傳參,傳的是表單格式的參數(shù)
2.json傳參,傳的是json格式的參數(shù)
具體用data還是json傳參要看接口是如何實(shí)現(xiàn)的
'''
#金融登錄接口
import requests
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/login"
cs = {
"mobilephone":"18012345678",
"pwd":"123456"
}
#用data傳參
r = requests.post(url,data=cs)
print(r.text)
#請(qǐng)求頭中 'Content-Type':
print(r.request.headers)
#用json傳參
r = requests.post(url,json=cs)
print(r.text) #"手機(jī)號(hào)不能為空",不支持手機(jī)號(hào)傳參
#請(qǐng)求頭中 'Content-Type': 'application/json'
print(r.request.headers)
#租車系統(tǒng)的登錄接口(沒(méi)有接口文檔,但是有界面時(shí),可以通過(guò)操作界面抓取接口)
url = "http://192.168.2.36:8089/carRental/login/login.action"
cs = {
"loginname":"admin",
"pwd":"123456"
}
#
r = requests.post(url,data=cs)
print(r.text)
assert "<title>首頁(yè)-汽車出租系統(tǒng)</title>" in r.text
'''
上傳文件
'''
import requests
#接口測(cè)試的網(wǎng)站,該網(wǎng)站把收到的請(qǐng)求,
# 組裝成json格式的響應(yīng),返回給用戶
#/post 是post方法
#/get 是get方法
#/delete 是delete方法
url = "http://www.httpbin.org/post"
cs = {
"user":"admin",
"e-mail": "[email protected]"
}
path = "c:/test.txt"
with open(path,mode='r') as f:
fs = {
#"file1" 上傳接口的參數(shù)名,是接口定義的
"file1" path,f), #二元組:(文件名字,文件對(duì)象)
"file2" path,f,"text/plain") #三元文件
}
r = requests.post(url,data=cs,files=fs)
print(r.text)
#租車系統(tǒng),添加車輛時(shí),先上傳車輛圖片
path = "c:/test.jpg"
url = "http://192.168.2.36:8089/carRental/file/uploadFile.action"
with open(path,mode='rb') as f:
fs = {
"mf": (path,f,"image/jpg") #三元組:(文件名字,文件對(duì)象,文件類型)
}
r = requests.post(url,data=cs,files=fs)
print(r.text)
assert "2021-03-18" in r.json()['data']['src']
#一次上傳多個(gè)文件(接口支持一次性上傳多個(gè)文件)
url = "http://www.httpbin.org/post"
path1 = "c:/test.txt"
path2 = "c:/test.jpg"
with open(path1,mode='r')as f1:
with open(path2,mode='rb')as f2:
fs = {
"f1" path1,f1),
"f2" path2,f2,"image/jpg")
}
r = requests.post(url,files=fs)
print(r.text)
|