接口自动化之requests模块的简单使用

接口自动化之requests模块的简单使用

什么是Requests?

Requests是用Python语言编写,基于Urllib,采用Apache2 Licensed 开源协议的HTTP库。

它比Urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。

一句话---Python实现的简单易用的HTTP库。

requests模块是第三方库,需要手动下载

pip install requests

导入requests模块

import requests

一、发送get请求

get请求传递参数使用params来进行传递

data = {
    "name": "desire",
    "age": 23
}
response = requests.get(url="http://httpbin.org/get", params=data)

获取响应数据

1、text属性(自动识别文本中的编码格式进行解码,有时候不准确,会出现乱码)

response.text

2、content(获取返回的内容,需要自己使用decode指定解码方式)

response.content.decode("utf8")

3、json():获取返回内容中的json数据(只能在返回数据时json的情况下使用)

response.json()

二、发送post请求

# 请求头
header = {
    "Content-Type": "application/json"
}
# 参数
data = {
    'name': 'Desire', 
    'age': '23'
}
# 请求地址
url = "http://httpbin.org/post"

json数值的参数一定要使用json去传递

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

如果表单类型的参数是Content-Type: application/x-www-form-urlencoded; charset=UTF-8

就需要使用data进行传递

response = requests.post(url=url, data=data, headers=header)

post请求上传文件: 使用files来上传文件

files = {'file': open('favicon.ico', 'rb')}
response = requests.post('http://httpbin.org/post', files=files)

三、发送patch请求

res = requests.patch(url="http://httpbin.org/patch")
print(res.json())

四、session会话维持

创建发送请求session对象,通过session对象发送请求
s = requests.Session()
通过session对象发送请求进行添加cookies值
s.get('http://httpbin.org/cookies/set/number/123456789')
通过同一个session对象发送请求,成功获取到上次请求添加的cookies值
response = s.get('http://httpbin.org/cookies')
print(response.text)

五、获取cookies值

response = requests.get('http://www.baidu.com')
print(response.cookies)

*封装发送请求类

class RequestsUrl(object):
    """发送请求"""

    @staticmethod
    def send(url, method, params=None, json=None, data=None, headers=None):
        """
        发送请求
        :param url:请求地址
        :param method:请求方式
        :param params:get请求数据
        :param json:json请求数据
        :param data:x-www-form-urlencoded格式数据
        :param headers:请求头
        :return 返回响应结果
        """
        # 将大写转化成小写
        method = method.lower()
        if method == "get":
            return requests.get(url=url, params=params, headers=headers)
        elif method == "post":
            return requests.post(url=url, json=json, data=data, headers=headers)
        elif method == "patch":
            return requests.patch(url=url, json=json, data=data, headers=headers)


class RequestSessionUrl(object):
    """使用session鉴权的接口,使用这个发送请求"""

    def __init__(self):
        self.re = requests.session()

    def send(self, url, method, params=None, json=None, data=None, headers=None):
        """
        发送请求
        :param url:请求地址
        :param method:请求方式
        :param params:get请求数据
        :param json:json请求数据
        :param data:x-www-form-urlencoded格式数据
        :param headers:请求头
        :return 返回响应结果
        """
        # 将大写转化成小写
        method = method.lower()
        if method == "get":
            return self.re.get(url=url, params=params, headers=headers)
        elif method == "post":
            return self.re.post(url=url, json=json, data=data, headers=headers)
        elif method == "patch":
            return self.re.patch(url=url, json=json, data=data, headers=headers)
原文地址:https://www.cnblogs.com/desireyang/p/12083510.html