Python - requests 接口测试工具包使用详解

安装requests包:pip install requests

1. requests支持的请求

  • requests.get(url, params=None, **kwargs) :数据获取请求
  • requests.post(url, data=None, json=None, **kwargs)) :数据保存请求
  • requests.head(url, **kwargs) :获取指定响应头数据
  • requests.patch(url, data=None, **kwargs) :局部更新数据
  • requests.put(url, data=None, **kwargs) :更新数据
  • requests.patch(url, data=None, **kwargs) :删除数据请求
  • requests.options(url, **kwargs) :获取服务端资源的支持情况

2. requests请求参数

  • url :要请求的url,协议+域名+路径
  • params :url中的参数,字典类型,会被拼接到url后面
  • data :请求体中的参数,字段类型
  • json :请求体中的参数,字典类型
  • **kwargs :可选参数,包括:headerscookiesfilesauthtimeoutallow_redirectsproxiesverifystreamcert
    • headers :请求头中的参数,字典类型
    • cookies :请求头中的cookies,字典类型
    • files :请求的文件,指定格式的字典
    • auth :请求头中的用户认证信息,字典类型
    • timeout :请求超时时间。单位:秒
    • allow_redirects :重定向设置
    • proxies :代理设置
    • verify :SSL证书设置
    • stream :下载大的文件的时候使用

3. reqeusts响应内容

  • r.text:通过文本的形式获取响应内容
  • r.encoding:获取响应内容的编码
  • r.content:获取二进制类型内容
  • r.json():获取JSON响应内容
  • r.raw:获取原始响应内容
  • r.status_code:获取响应状态码
  • r.headers:获取响应头

案例:

案例一:获取豆瓣某一页面的数据

import requests


def get_page(page):
    url = 'https://movie.douban.com/j/new_search_subjects'
    data = {
    
    
        "sort": "U",
        "range": "0\,10",
        "tags": "f",
        "start": page
    }
    header = {
    
    
          'Connection': 'keep-alive',
          'Pragma': 'no-cache',
          'Cache-Control': 'no-cache',
          'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
          'Accept': 'application/json, text/plain, */*',
          'sec-ch-ua-mobile': '?0',
          'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36',
          'sec-ch-ua-platform': '"macOS"',
          'Sec-Fetch-Site': 'same-origin',
          'Sec-Fetch-Mode': 'cors',
          'Sec-Fetch-Dest': 'empty',
          'Referer': 'https://movie.douban.com/tag/',
          'Accept-Language': 'zh-CN,zh;q=0.9',
          'Cookie': 'bid=gtpRtyyqHX8; douban-fav-remind=1; ll="118281"; __utmv=30149280.20937; __gads=ID=a147848eb050f99c-220e989daad00018:T=1633158638:RT=1645076404:S=ALNI_MaSzPYjUV2oS8f1xhVi6Cpfq4DLMQ; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1649597597%2C%22https%3A%2F%2Fwww.douban.com%2F%22%5D; __utma=30149280.1988316604.1633158640.1645076404.1649597597.8; __utmc=30149280; __utmz=30149280.1649597597.8.8.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utma=223695111.1631674592.1649597597.1649597597.1649597597.1; __utmc=223695111; __utmz=223695111.1649597597.1.1.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; _vwo_uuid_v2=D16D7432A4D9A3AE7F640C9F5C24E4D3F|3fcd57d379e799356d9c77c5793493de; ct=y; _pk_id.100001.4cf6=776c2412cafc6b17.1649597597.1.1649597668.1649597597.'
    }
    res = requests.get(url=url,data=data, headers=header)
    return res.json()


a = get_page("20")
f = open('result.json', 'a')
f.write(str(a))
f.close()

案例二:循环获取接口数据并写入到Excel中

import requests

def get_page(page):
    url = 'https://xxx.xxxxx.com/xxxxxx/users/customers?page_no=' + page + '&page_size=20'
    header = {
    
    
          'authorization': 'Bearer XXXXXX'
    }
    res = requests.get(url=url, headers=header)
    return res.json()

import openpyxl
wbname = "/Users/mymac/Desktop/Projects/PythonCode/Excel操作/用户数据.xlsx"
print("写入Excel[%s]中......." %(wbname))
wb = openpyxl.Workbook()
sheet = wb.create_sheet("Sheet1")
sheet.append(["店铺","等级", "手机号", "昵称", "积分"])

i = 1
while i <= 100:
    a = get_page(str(i))
    list_data = a["data"]["list"]
    print(list_data)
    for row in list_data:
        data_a = [
            row["buy_shop"],
            row["level_name"],
            row["mobile"],
            row["nick_name"],
            row['point'],
        ]
        sheet.append(data_a)
    i+=1

wb.save(filename=wbname)
print("写入成功!")

案例三:上传文件

import requests
url = "http://XXX.com/upfile"
files= {
    
    "files":open("test.jpg","rb")}
response = requests.post(url,files=files)
print(response.text)

猜你喜欢

转载自blog.csdn.net/weixin_44988085/article/details/128512698