接口自动化: requests库的使用

146 阅读2分钟

1.安装requests 第三方库

pip install requests

2. 发送get请求

import requests
url = 'https://httpbin.org/get'
# 发送请求,得到响应response
response = requests.get(url)
# 打印
print(response)  # <Response [200]> 是个对象
print(response.text) # 获取响应数据
print(response.status_code) # 获取响应状态码 200
----output----
<Response [200]>
{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.27.1", 
    "X-Amzn-Trace-Id": "Root=1-637c8229-0052ef8d2120cbcf59beb979"
  }, 
  "origin": "223.72.70.160", 
  "url": "https://httpbin.org/get"
}
200

3.发送post请求

url = 'https://httpbin.org/post'
resp = requests.post(url)
print(resp.text)
----output----
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Content-Length": "0", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.27.1", 
    "X-Amzn-Trace-Id": "Root=1-637c8599-14a284947eb08a0407013a86"
  }, 
  "json": null, 
  "origin": "223.72.70.160", 
  "url": "https://httpbin.org/post"
}

4.通过参数指定请求方法(通常使用)

# 自己通过参数指定请求方法
url = 'https://httpbin.org/post'
resp = requests.request(method='post',url=url)
print(resp.text)

3.请求参数传递

3.1GET和POST都可以传递URL参数

# 发送get url参数
name = 'test'
pwd = '123'
url = f'http://httpbin.org/get?username={name}&password={pwd}'
response = requests.get(url)
print(response.text)

# POST通过multipart/form-data 传递参数,GET请求不可以
data = {'username":"test","password":"123456"}
request.post(url,data=data)

# POST通过json传递参数,GET请求不可以
data = {'username":"test","password":"123456"}
requests.post(url,params=params,json=data)

4.获取响应

网络中传输的数据格式是用二进制传递,不好读取数据

# 获取文本 是字符串
resp.text
# 获取json resp.json() type是字典
data = response.json()
#print(data['args']['password']
# 获取二进制数据 
resp.context

5. 自动处理session鉴权(一般使用)

例子:课堂派
import requests
def login_with_session():
    # 初始化一个 session 对象,用户创建会共享,同一浏览器可以共享cookie,自动传递cookie
    s = requests.Session()
    # 第一个接口
    login_url = 'https://v4.ketangpai.com/UserApi/login'
    data = {
        "email": "xxx",
        "password": "xx",
        "remember": "0"
    }
    # 发送请求
    s.post(login_url, data)
    # 第二个接口
    user_url = 'https://v4.ketangpai.com/UserApi/getUserInfo'
    # 发送请求
    r = s.get(user_url, headers={"xxx": "yyy"})
    print(r.text)
login_with_session()

6.手工处理cookies鉴权

def login():
    url = 'https://v4.ketangpai.com/UserApi/login'
    data = {
        "email": "xxx",
        "password": "xx",
        "remember": "0"

    }
    r = requests.post(url, data)
# 获取第一个接口的cookies
    sid = r.cookies.get('PHPSESSID')
    url = 'https://v4.ketangpai.com/UserApi/getUserInfo'
# 手工传传递cookie数据
    r = requests.get(url, cookies={'PHPSESSID': sid})
    print(r.text)