Python接口測試之requests詳解
- 2020 年 2 月 19 日
- 筆記
接口自動化的框架很多,python對應的類庫也很多,但request類庫相信對大家來說還是最熟悉的,本篇將圍繞request給大家介紹接口自動化中常用的功能。
引入requests包是基礎操作
import requests
構造一個最簡單的get請求:
r = requests.get('http://httpbin.org/get') print r.text 返回數據 { "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.1", "X-Amzn-Trace-Id": "Root=1-5e3796cd-6fe9ebd9419d893ca4b67275" }, "origin": "49.72.104.32", "url": "http://httpbin.org/get" }
在get請求中添加參數的兩種方式:
r = requests.get('http://httpbin.org/get?name=cctester&age=6') data={'name':'cctester','age':'6'} r=requests.get('http://httpbin.org/get', params=data) print r.text 這兩種請求方式本質是一樣的; 返回數據: { "args": { "age": "6", "name": "cctester" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.1", "X-Amzn-Trace-Id": "Root=1-5e379a18-7661065e852f531c4f569118" }, "origin": "49.72.104.32", "url": "http://httpbin.org/get?name=cctester&age=6" }
構造post請求:
data = {'name': 'cctester', 'skill': 'coding'} r = requests.post('http://httpbin.org/post', data=data) print(r.text) { "args": {}, "data": "", "files": {}, "form": { "name": "cctester", "skill": "coding" }, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Content-Length": "26", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "python-requests/2.18.1", "X-Amzn-Trace-Id": "Root=1-5e37a7bb-15fedde4881a9f1abbf7590e" }, "json": null, "origin": "49.72.104.32", "url": "http://httpbin.org/post" }
打印cookie
r = requests.get('https://www.taobao.com') print(r.cookies)
session保持
# 請求改為由session發起 s = requests.Session() # 設置cookie s.get('http://httpbin.org/cookies/set/number/123456789') print s.cookies # 讀取cookie r = s.get('http://httpbin.org/cookies') print(r.text) 輸出內容 <RequestsCookieJar[<Cookie number=123456789 for httpbin.org/>]> { "cookies": { "number": "123456789" } }