• 接口自动化之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)
    
  • 相关阅读:
    MySQL-LSN
    MySQL Binlog三种格式介绍及分析
    MySQL中的seconds_behind_master的理解
    MySQL的四种事务隔离级别
    pt-table-sync修复mysql主从不一致的数据
    MySQL主从不同步、数据不一致解决办法
    nginx的应用【静态代理、动静分离】
    Redis数据缓存淘汰策略【FIFO 、LRU、LFU】
    Java基本知识点o(1), o(n), o(logn), o(nlogn)的了解
    JS函数篇【2】
  • 原文地址:https://www.cnblogs.com/desireyang/p/12083510.html
Copyright © 2020-2023  润新知