1.什麼是requests?
答:requests是用來傳送http請求以及接收http響應的python第三方庫,主要用於做介面自動化。
2.安裝
pip install requests
3.requests常用方法
requests.get(url, params=none, **kwargs) **kwargs可變長度的字典。requests.post(url, data=none, json=none, **kwargs)
requests.put(url, data=none, **kwargs)
requests.delete(url, **kwargs)
requests.request(method, url, **kwargs) 包含了上面所有的請求
requests的底層方法:
底層方法:session.request()
defrequest(self, method, url,
params=none, data=none, headers=none, cookies=none, files=none,
auth=none, timeout=none, allow_redirects=true, proxies=none,
hooks=none, stream=none, verify=none, cert=none, json=none):
4.request()返回的response物件
print(res.text) #返回body的text格式
print(res.json()) #
返回body的dict格式
print(res.content) #
返回body的byte格式
print(res.status_code) #
返回狀態碼
print(res.reason) #
返回狀態資訊
print(res.cookies) #
返回響應的cookie資訊
print(res.encoding) #
返回編碼格式
print(res.headers) #
返回響應頭
print(res.request.method) #
返回請求的資料
5.json和dict(正常我們看到的都是字典就是json,若使用data傳參,需要把字典轉換成json字串,若使用json傳參,直接使用對應字典)
字典:dict
json:json字串
json.loads() 把json字串轉化成dict
json.dumps() 把dict轉化成json字串
6.對應的引數型別:
data:典。2.通過data傳參,預設請求頭:text/plain,傳的引數的型別:字串型別。
json:files:檔案上傳
7.注意:有cookies關聯的介面使用,傳送請求都要使用(例:test_request.session.request)方式傳送請求,存在介面關聯的強求一定要注意,請求的方式要一致,我自己寫最後的兩個介面的時候乙個使用requests.session.request傳送,乙個使用get傳送,導致無法關聯
importjson
import
random
import
reimport
requests
class
test_request:
access_token = ''
csrf_token = ''
#使用session傳參會自動關聯cookies
session =requests.session()
deftest_get_token(self):
url = "
"data =
res = requests.get(url=url,params=data)
(res.json())
test_request.access_token = res.json()["
access_token"]
deftest_get_mark(self):
url = "
"data =
res = requests.get(url=url,params=data)
(res.json())
deftest_create_mark(self):
url = "
"+test_request.access_token
data =}
res = requests.post(url=url,data=json.dumps(data))
print(json.loads(json.dumps(res.json()).replace(r"
\\","
\\"))) #
unicode預設是乙個斜槓,所以要替換
deftest_file_mark(self):
url = "
"+test_request.access_token
data =
res = requests.post(url=url,files=data)
(res.json())
deftest_shouye_windphp(self):
url = "
"res = test_request.session.request(method="
get",url=url)
test_request.csrf_token= re.search('
name="csrf_token" value="(.*?)"
',res.text).group(1)#
返回網頁中查詢
(test_request.csrf_token)p
deftest_login_windphp(self):
urls = "
"datas =
headers =
#res = requests.post(url=url,data=data,headers=header)
#這樣操作解決cookies關聯問題
res =test_request.session.request(method="
post
", url=urls, data=datas, headers=headers)
print(res.text)
每篇一句:
我藏在人群中失去晴空
python之requests介面自動化
在進行介面自動化測試時,有好多介面都基於登陸介面的響應值來關聯進行操作的,在次之前試了很多方法,都沒有成功,其實很簡單用session來做。coding utf 8 import requests 在登陸模組建立乙個全域性session,在其他介面操作時帶入登陸時的session,保持session...
介面自動化2 requests庫
在python中,能構造http請求的庫有很多,比如 內建庫 httplib,urllib2,http 第三方庫 urllib3,requests,pycurl request庫幫助文件 怎麼構造請求體資料 http協議第四部分的內容 口訣1 params引數,如果傳入的是字典,自動編碼為表單。一般...
介面自動化之unittest ddt
usr bin python3 coding utf 8 time 2018 12 10 15 03 author yosef 夜雨聲煩 email wurz529 foxmail.com file learnddt.py software pycharm community edition imp...