接口自動化之--requests詳解


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

def request(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:
1.通過data傳參,表示表單傳參,默認的請求頭:Content-Type:application/xwww-from-urlencoded,請求的格式是:a=1&b=2,傳的參數的類型:純鍵值對的字
典。
2.通過data傳參,默認請求頭:text/plain,傳的參數的類型:字符串類型。
json:
1.通過json傳參,默認請求頭:Content-Type:application/json,傳的參數類型:dict字典
files:文件上傳

7.注意:有cookies關聯的接口使用,發送請求都要使用(例:Test_request.session.request)方式發送請求,存在接口關聯的強求一定要注意,請求的方式要一致,我自己寫最后的兩個接口的時候一個使用requests.session.request發送,一個使用get發送,導致無法關聯

import json
import random
import re
import requests


class Test_request:
    access_token = ''
    csrf_token = ''
    #使用session傳參會自動關聯cookies
    session = requests.session()
    def test_get_token(self):
        url = "https://地址/cgi-bin/token"
        data = {
            "grant_type":"client",
            "appid":"wx",
            "secret":"307c"
        }
        res = requests.get(url=url,params=data)
        print(res.json())
        Test_request.access_token = res.json()["access_token"]
    def test_get_mark(self):
        url = "https://地址/cgi-bin/tags/get"
        data = {
            "access_token": Test_request.access_token
        }
        res = requests.get(url=url,params=data)
        print(res.json())
    def test_create_mark(self):
        url = "https://地址/cgi-bin/tags/create?access_token="+Test_request.access_token
        data ={"tag": {"name": "廣東"+str(random.randint(10,100))}}
        res = requests.post(url=url,data=json.dumps(data))
        print(json.loads(json.dumps(res.json()).replace(r"\\","\\"))) #Unicode默認是一個斜杠,所以要替換
    def test_file_mark(self):
        url = "https://地址/cgi-bin/media/uploadimg?access_token="+Test_request.access_token
        data = {
            #"access_token": Test_request.access_token,這樣傳值是錯誤的,要做url中拼接
            "media": open(r"D:/Titen/baogao.png",mode="rb") #只要是文件就是要先打開,文件地址1.r"D:/Titen/baogao.png",2.r"D:\\Titen\\baogao.png",都可以
        }
        res = requests.post(url=url,files=data)
        print(res.json())


    def test_shouye_windphp(self):
        url = "http://地址/pp/"
        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
    def test_login_windphp(self):
        urls = "http://地址/pp/index.php?m=u&c=login&a=dorun"
        datas = {
            "username": "admin",
            "password": "123456",
            "csrf_token": Test_request.csrf_token,
            "backurl": "http://地址/pp/",
            "invite": ""
        }
        headers ={
            "Accept":"application/json, text/javascript, /; q=0.01",
            "X-Requested-With":"XMLHttpRequest"
        }
        # 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)

 

  每篇一句:

  我藏在人群中失去晴空


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM