Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytest+requests+allure实现接口自动化测试系列(6)-重新封装requests

pytest+requests+allure实现接口自动化测试系列(6)-重新封装requests

作者头像
搁浅同学
发布于 2022-07-21 07:01:10
发布于 2022-07-21 07:01:10
56300
代码可运行
举报
运行总次数:0
代码可运行

接着上一篇继续分享

上一篇测试数据的结构增加了headers,对于headers处理,主要区别Content-Type的处理。比较常见的是Content-Type:application/json和Content-Type:multipart/form-data这两种。这次封装的改动主要是针对后者。

改动后的代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from requests_toolbelt import MultipartEncoder
from common.logger import logger

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)


def request_handler(method: str, url: str, headers: dict, data: dict):
    """
    :param headers: 请求头
    :param method: 方法字符串,'GET''POST'
    :param url: 请求地址
    :param data: 要传递的参数
    :return: 返回响应的数据
    """
    try:
        method = method.upper()
        if method == "GET" or method == "DELETE":
            return requests.request(method=method, url=url, params=data, verify=False).json()
        elif method == "POST" or method == "PUT":
            if 'form-data ' in headers['Content-Type']:
                m = MultipartEncoder(
                    fields=data
                )
                headers['Content-Type'] = m.content_type
                return requests.request(method=method, url=url, headers=headers, data=m, verify=False).json()
            else:
                return requests.request(method=method, url=url, headers=headers, json=data, verify=False).json()
        else:
            logger.debug(f"=====大兄弟===暂不支持{method}呢====你快点补充吧====")
            return None
    except Exception as e:
        raise e

上面增加了multipart/form-data表单提交的情况,需要requests_toolbelt这个库,还是通过pip命令安装。

因为目前没有表单提交接口,还是通过之前的接口进行测试,重新修改的request_handler函数是否正确,示例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
from common.request_handler import request_handler

method = 'post'
url = 'https://api2.mubu.com/v3/api/user/phone_login'
headers = {'Content-Type': "application/json"}
payload = {
    "phone": "13528872802",
    "password": "Aa12345678",
    "callbackType": 0
}
r = request_handler(method, url, headers, payload)
print(r)

输出还是和之前一样,说明重新改写的,应该没有问题,如果以后碰到问题,再修改也没有关系!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 暴走的软件测试Tester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验