簡介:Requests 是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫。它比 urllib 更加方便,能夠節約咱們大量的工做,徹底知足 HTTP 測試需求。Requests 的哲學是以 PEP 20 的習語爲中心開發的,因此它比 urllib 更加 Pythoner。更重要的一點是它支持 Python3 哦!html
1、安裝python
使pip安裝:json
pip install requestsapi
安裝完後,運行一個簡單的例子查看是否安裝成功:cookie
1數據結構 2app 3post 4測試 5編碼 |
|
2、幾種請求類型
①get請求:requests.get('url')
②post請求:requests.post("url/post")
③put請求:requests.put("url/put")
④delete請求:requests.delete("url/delete")
⑤head請求:requests.head("url/get")
⑥options請求:requests.options("url/get")
3、get請求
傳遞url參數
在get請求中,容許使用params關鍵字,以一個字典來傳遞這些參數,例如:
1 2 3 4 5 6 7 |
|
若是字典中存在None的值,是不會添加到url請求中的
1 2 3 4 5 6 |
|
ps:不使用params的話,也可在請求中輸入所有的地址,效果相同,如:
r=requests.get('http://m.xxxxx.com/api/v2/activities?pageIndex=1&pageSize=10&categoryId=9')
注意:在某些get請求中,須要辨別用戶身份,所以會須要在請求中發送cookie內容,如某些須要用戶登陸才能訪問的頁面,相關內容請輕戳這裏
4、post請求
1.以表單形式傳遞參數:
想要發送一些表單形式的數據,只需簡單的傳遞一個字典給data關鍵字,在發送請求的時候,會自動編碼爲表單的形式,例如:
1 2 |
|
2.以json形式傳遞參數:
在不少狀況下,想要發送的數據並不是爲表單形式,而是一個json格式的字符串,若是傳遞給data關鍵字的內容不是一個dict,而是
一個string,那麼在發送的時候,數據會被直接發送出去,不會自動編碼爲表單形式。
爲了將一個數據結構轉換爲json格式的字符串,首先得須要導入一個json包,兩種經常使用的方法爲:json.dumps()與json.loads()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
注意:1.json編碼支持的基本類型有:None, bool, int, float, string, list, tuple, dict。對於字典,json會假設key是字符串(字典中的任何非字符串key都會在編 碼時轉換爲字符串),要符合JSON規範,應該只對python列表和字典進行編碼。此外,在WEB應用中,把最頂層對象定義爲字典是一種標準作法。 2.json編碼的格式幾乎和python語法一致,略有不一樣的是:True會被映射爲true,False會被映射爲false,None會被映射爲null,元組()會被映射爲列表[],如:
1 2 3 4 5 6 |
|
所以 想要在post請求中使用data關鍵字來傳遞json格式的字符竄,首先得把dict轉爲string,例如:
1 2 3 4 5 6 7 8 9 |
|
除了能夠對dick編碼後以string的方式傳遞參數外,還能夠直接使用json關鍵字直接傳遞,在傳遞時會自行進行編碼爲string類型
1 2 3 4 |
|
在post請求中用到的cookie部分。先關內容仍是輕戳這裏
5、定製headers
若想要爲請求添加頭部信息,只須要在請求中使用headers關鍵字傳遞一個字典便可
首先簡單介紹下headers中的內容:
Host:www.xxx.com 指定請求資源的主機
Accept:image/png,*/*,q=0.5 指定客戶端接受哪些類型的響應內容
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6 客戶端的操做系統語言,一般使用中文操做系統,屬性值通常爲zh-cn
Accept-Encoding:gzip, deflate 客戶端所能接受的編碼規則或格式規範
Referer:Referer':'http://xx.com/user/login.html? 能夠理解爲請求來源
Connection:keep-alive 表示當client和server通訊時對於長連接如何處理
cookies 不解釋...
....
查看請求中發出的請求頭,可使用以下方法:
1 2 3 4 5 6 |
|
定製headers請求以下:
1 2 3 4 5 6 |
|
6、響應
1.響應狀態
在請求發送成功後,能夠用status_code來查看相應狀態(每一個狀態表明的具體意義不在此文介紹)
1 2 3 4 5 6 |
|
2.響應內容
在上面的內容中,已經展現了用text來獲取相應的內容,返回的內容爲string
1 2 3 4 5 6 7 8 |
|
除此以外,requests中也帶有帶有一個內置的json解析器,將返回的內容轉換爲dict
1 2 3 4 5 6 7 8 |
|
那麼經過json解析器轉爲dict後,想要查看到返回內容中某個具體參數的值,就比較方便啦!
3.響應內容編碼格式
在獲取響應內容的時候,可使用r.encoding來查看相應內容的編碼格式
1 2 3 4 5 6 |
|
也能夠進行指定編碼,當改變了編碼方式是後,每次獲取響應內容,都會使用新的編碼方式
1 2 3 4 |
|
4.響應頭內容
1 2 3 |
|
5.cookies
1 2 3 |
|
7、設置超時時間
能夠經過timeout來設置超時時間,若是在此時間內沒有響應,會報錯
1 2 |
|
分類: 接口測試