• <menu id="sssag"></menu>
  • <menu id="sssag"></menu>
  • python+pytest接口自動化(4)-requests發送get請求

    python中用于請求http接口的有自帶的urllib和第三方庫requests,但 urllib 寫法稍微有點繁瑣,所以在進行接口自動化測試過程中,一般使用更為簡潔且功能強大的 requests 庫。下面我們使用 requests 庫發送get請求。

    requests庫

    簡介

    requests 庫中提供對用的方法用于常用的HTTP請求,對應如下:

    requests.get()			# 用于GET請求
    requests.post()			# 用于POST請求
    requests.put()			# 用于PUT請求
    requests.delete()		# 用于DELETE請求
    

    當然還有更多的方法,這里只列舉常用的。

    安裝

    安裝命令:pip install requests

    發送get請求

    get請求參數格式說明

    requests 中的 get 方法源碼如下:

    def get(url, params=None, **kwargs):
        r"""Sends a GET request.
    
        :param url: URL for the new :class:`Request` object.
        :param params: (optional) Dictionary, list of tuples or bytes to send
            in the query string for the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :return: :class:`Response <Response>` object
        :rtype: requests.Response
        """
    
        kwargs.setdefault('allow_redirects', True)
        return request('get', url, params=params, **kwargs)
    

    參數說明:

    1. url,即接口地址
    2. params,接口參數,可選(即可填可不填)
    3. **kwargs,可以添加其他請求參數,如設置請求頭headers、超時時間timeout、cookies等

    不帶參數請求

    import requests
    
    res = requests.get(url="http://www.factorywings.com/lfr0123/")
    # 請求得到的res是一個Response對象,如果想要看到返回的文本內容,需要使用.text
    print(res.text)
    

    帶參數請求

    import requests
    
    url = "http://www.baidu.com/s"
    params = {"wd": "給你一頁白紙-博客園", "ie": "utf-8"}
    res = requests.get(url=url, params=params)
    print(res.text)
    

    加入請求頭headers

    有些接口限制只能被瀏覽器訪問,這時按照上面的代碼去請求就會被禁止,我們可以在代碼中加入 headers 參數偽裝成瀏覽器進行接口請求,示例如下:

    import requests
    
    url = "http://www.baidu.com/s"
    params = {"wd": "給你一頁白紙-博客園", "ie": "utf-8"}
    
    # User-Agent的值為瀏覽器類型
    headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
        }
    
    res = requests.get(url=url, params=params, headers=headers)
    print(res.text)
    

    部分結果如下:

    這里的響應體其實就是在百度中搜索給你一頁白紙-博客園的結果頁面。

    除此之外,還可以加入timeout、cookies等,寫法如下:

    # timeout只限制請求的超時時間,單位為s,若超時則報錯
    res = requests.get(url=url, params=params, headers=headers, timeout=20, cookies=cookies)
    

    響應內容

    發送請求后會獲取到接口響應的內容,如上面示例中res.text,其他響應內容獲取方式如下:

    res.status_code		# 響應狀態碼
    res.headers			# 響應頭
    res.encoding		# 響應體編碼格式
    res.text			# 響應體,字符串形式的文本信息
    res.content			# 響應體,二進制形式的文本信息,會自動解碼
    res.cookies			# 響應的cookie
    res.json()			# 響應體格式為json,則需要通過json()進行解碼
    

    這里需要注意,res.textres.content的使用,具體使用哪種方式獲取響應體內容,需要根據編碼方式進行選擇,最笨的方法就是一種不行換另一種試試。

    示例如下:

    import requests
    
    url = "http://www.baidu.com/s"
    params = {"wd": "給你一頁白紙-博客園", "ie": "utf-8"}
    # User-Agent的值為瀏覽器類型
    headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
        }
    
    res = requests.get(url=url, params=params, headers=headers)
    print(res.text)
    print(res.status_code)
    print(res.headers)
    print(res.encoding)
    print(res.cookies)
    

    結果如下:

    結果中由上而下依次對應代碼中print的響應內容。

    posted @ 2022-03-07 20:23  給你一頁白紙  閱讀(139)  評論(0編輯  收藏  舉報
    国产在线码观看超清无码视频,人妻精品动漫H无码,十大看黄台高清视频,国产在线无码视频一区二区三区,国产男女乱婬真视频免费,免费看女人的隐私超爽,狠狠色狠狠色综合久久蜜芽