介面自動化之 requests詳解

2022-09-19 04:24:11 字數 3369 閱讀 4088

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傳送,導致無法關聯

import

json

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)

print

(res.json())

test_request.access_token = res.json()["

access_token"]

deftest_get_mark(self):

url = "

"data =

res = requests.get(url=url,params=data)

print

(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)

print

(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)#

返回網頁中查詢

print

(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...