【接口自动化测试】-requests模块(GET、POST、PUT、DELETE)

一、什么是requests库

1.1 介绍

Requests库是用python编写的,基于urlib,采用Apache2 Licensed开源协议的HTTP库,相比urlib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。

1.2 安装

pip  install  requests

 二、发送GET请求

常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS

2.1  GET请求

import requests

response = requests.get("https://www.baidu.com")

请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。

响应对象.url  # 获取请求url

响应对象.status_code  #获取响应状态码

响应对象.text   # 以文本形式显示相应内容

2.2 get方法不带参代码

    r = requests.get("https://www.baidu.com")
    print('请求地址:', r.url)
    print('请求状态码', r.status_code)
    print('请求内容',r.text)

2.3 get方法带参数

# 单个键值对
if __name__ == '__main__':
    param = {
        "id": 1001
    }
    # params参数:可以是字典或者字符串,推荐字典
    r = requests.get("https://www.baidu.com", params=param)
    print('请求地址:', r.url)
    print('响应状态码', r.status_code)
    print('响应内容',r.text)
# 多个键值对
if __name__ == '__main__':
    param = {
        "id": 1001,
        "kw": "北京"
    }
    # params参数:可以是字典或者字符串,推荐字典
    r = requests.get("https://www.baidu.com", params=param)
    print('请求地址:', r.url)
    print('响应状态码', r.status_code)
    print('响应内容',r.text)

三、发送POST请求

3.1 post基础

response = requests.post(url, data=None,json=None)

param url:请求的URL

param data:(可选) 要发送到请求体中的字典、元组、字节或文件对象

param json:(可选)要发送到请求体中的JSON数据

rtype: request,Response

3.2 post应用

if __name__ == '__main__':
    headers = {"Content-Type": "application/json"}
    data = {
        "username": "admin",
        "password": "123456"
    }
    url = "http://localhost:8001/employee/login"
    # post的参数必须指定headers字典包含{"Content-Type": "application/json"}
    # json参数为字典类型,key和value为字符串时,使用双引号,否则无法解析
    r = requests.post(url, json=data,headers=headers)
    print('请求地址:', r.url)
    print('应答状态码', r.status_code)
    print('应答内容', r.json())

3.3 参数json与data的区别

json=data 等价于 data=json.dumps(data) # 转换成json字符串

data:字典对象

json:json字符串

3.4 response.text与response.json()的区别

response.text 返回结果类型是字符串

response.json() 返回结果类型是dict,可以通过字典的方法获取你想要的值

四、响应内容

请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。

response.status_code             状态码

response.url                            请求url

response.encoding                 查看响应头部字符编码

response.headers                    头信息

response.cookies                     cookie信息:获取响应cookies信息(服务器产生)

response.text                            文本形式的响应内容

response.content                       字节形式的响应内容,如图片

response.json()                          json形式的响应内容

JSON响应内容

如果请求响应的内容为JSON格式的数据,则可以直接调用response.json()方法获取数据,因为requests中内置了JSON解码器,帮助我们处理json数据。

if __name__ == '__main__':
    url = "https://www.baidu.com"
    r = requests.get(url)
    print('请求地址:', r.url)
    print('应答状态码', r.status_code)
    print('应答内容', r.text)
    print('应答编码:', r.encoding)
    # r.encoding = "utf-8" 可以设置编码
    r.encoding = "utf-8"
    print('应答内容', r.text)
    print('应答编码:', r.encoding)
    print('应答头信息:', r.headers)
    print('应答cookies', r.cookies)

你可能感兴趣的:(自动化测试,自动化)