基於Python的接口自動化實戰-基礎篇之Requests模塊

引言

        在使用Python進行接口自動化測試時,實現接口請求構建主要是使用Requests模塊。Requests庫是python的第三方模塊,requests模塊在python內置模塊的基礎上進行了高度的封裝,從而使得python進行網絡請求時,變得更加簡潔和人性化,以下介紹python Requests模塊的主要操作和應用。

一、模塊說明

Requests模塊是第三方模塊,需要預先安裝,requests模塊在python內置模塊的基礎上進行了高度的封裝,從而使得python進行網絡請求時,變得更加簡潔和人性化。它幾乎完全用python編寫,比urllib2模塊更易方便構建請求。Requests模塊支持HTTP連接保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動響應內容的編碼,支持國際化的URLPOST數據自動編碼等功能特性。具體的功能特性介紹,可以學習requests中文文檔,傳送門:https://2.python-requests.org/zh_CN/latest/index.html,requests模塊同時支持python2python3相關的版本。中文在線文檔總結的模塊特性:

 

安裝requests模塊:

要安裝 Requests,打開cmd,直接pip安裝,pycharm中搜索requests 安裝即可

1.Pip安裝:pip install requests

2.Pycharm 中搜索 requests 安裝

 

二、Requests模塊快速入門

開始導入requests模塊,然後即可使用該模塊下所有高度封裝的方法或者類。

 

1     發送簡單的請求

使用requests發送網絡請求,如訪問百度,我們只需按如下方式發送請求即可。

可以這樣:

requests.get("https://www.baidu.com/")

也可以這樣:

url 'https://www.baidu.com/'
requests.get(url=url)

其他的請求方式大體都是這樣:

 

2    發送帶參數的請求

 

我們在構建url發送請求時往往會傳遞一些數據,這些數據往往會以鍵/值對的接在url中,接在一個問號後面,編輯如下代碼如請求百度服務器地址,查詢:requests,那這個請求的url就像這樣:

import requests
url 'https://www.baidu.com/'
data {'wd':'requests'}
requests.get(url=url,params=data)
print(r.url)

打印出請求的urlr.url是獲取發送請求的url
https://www.baidu.com/?wd=requests

一般發送get請求是將需要傳遞的參數傳遞到params中即可,上面實例params傳遞的是字典類型數據,當然也可以將一個列表作爲值傳入:

payload {'key1''value1''key2': ['value2''value3']}
requests.get('http://httpbin.org/get', params=payload)
print(r.url)

輸出url:

http://httpbin.org/get?key1=value1&key2=value2&key2=value3

 

3    定製header頭和cookie

在發送請求時,往往需要爲請求添加http請求頭,requests庫也可以簡單構建傳遞請求頭,只要一個dict傳遞給請求的headers參數即可:

headers {
            "Accept""application/json, text/plain, */*",
            "User-Agent""Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
        }
requests.get(url=url,params=data,headers=headers)

有時有些請求需要攜帶cookie信息,在發送請求時也只要傳遞給請求的cookie參數即可:

 

4    響應內容

使用requests方法後,會返回一個response對象,其存儲了服務器響應的內容。在發送請求後,有時我們需要獲取發送請求的目標服務的返回信息,如返回狀態碼、返回數據體等,以及以什麼樣的解碼方式返回數據。如下是response對象封裝的方法:

 

5    發送post請求

HTTP 協議規定 POST 提交的數據必須放在消息主體(entity-body)中,但協議並沒有規定數據必須使用什麼編碼方式,服務端通過是根據請求頭中的Content-Type字段來獲知請求中的消息主體是用何種方式進行編碼,再對消息主體進行解析。一般常用的提交數據方式包括:

1)form表單提交數據

請求頭中的Content-Type值爲:application/x-www-form-urlencoded,Reqeusts支持以form表單形式發送post請求,只需要將請求的參數構造成一個字典,然後傳給requests.post()data參數即可

實例:

 

2)以json形式發送post請求

請求頭中的Content-Type值爲:application/json,Reqeusts支持以json串形式發送post請求,只需要將一個python字典類型的數據轉換成json格式,然後傳給requests.post()data參數即可

實例:

 

3)multipart/form-data形式上傳文件

經常用到的是上傳文件用的表單,請求頭中的Content-Type值爲:multipart/form-dataRequests支持以multipart形式發送post請求,只需將一文件傳給requests.post()files參數即可。

實例:

 

 

6    超時和代理

Requests也支持方便構建請求超時和代理設置,只需分別將請求數據傳遞給timeoutproxies即可,代碼實例:

 

 

三、Requests實際應用

1. 網頁數據爬蟲,Requests能方便的構建和發送基於HTTP協議的網絡請求,因此可以基於Requests來編寫爬蟲腳本,爬取互聯網上目標網站的網頁,提取網頁源代碼中的圖片、文本、視頻等數據,並可以將爬取的海量大數據應用於數據分析

2. 在軟件測試項目中,可以用來構建接口測試,完成不同接口測試腳本和執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章