python+pytest测试用例框架代码请求封装思路

注意:这是我自己的封装思路,大家可以起到借鉴的作用。也可以跟着我的思路来,他的好处在于如果项目发送改变,代码健壮性会比较高,改动代码会比较小

1.可以新建一个api的文件夹用于封装请求数据的参数

2.处理返回的数据,返回给调用层

3.process_response  函数封装的东西,

4.创建一个空的类  ResultResponse, 用来组装response

5.在写一个函数,用于存放接口地址

6.在写一个类,用于真正的请求和存放域名以及拼接接口地址和设置日志等等,,注意:这个类应该继承下面写的类   RestClient

import requests, json

from ApiTest.utils.log_util import logger
from ApiTest.utils.read import base_data

api_root_url = base_data.read_ini()["host"]["api_sit_url"]


class RestClient:
    def __init__(self):
        self.api_root_url = api_root_url
        self.session = requests.Session()

    def get(self, url, **kwargs):
        self.request_log(url, "GET", **kwargs)
        return self.request(url, "GET", **kwargs)

    def post(self, url, **kwargs):
        self.request_log(url, "POST", **kwargs)
        return self.request(url, "POST", **kwargs)

    def put(self, url, **kwargs):
        self.request_log(url, "PUT", **kwargs)
        return self.request(url, "PUT", **kwargs)

    def delete(self, url, **kwargs):
        self.request_log(url, "DELETE", **kwargs)
        return self.request(url, "DELETE", **kwargs)

    def request(self, url, method, **kwargs):

        if method == "GET":
            return self.session.get(self.api_root_url + url, **kwargs)
        if method == "POST":
            return self.session.post(self.api_root_url + url, **kwargs)
        if method == "PUT":
            return self.session.put(self.api_root_url + url, **kwargs)
        if method == "DELETE":
            return self.session.delete(self.api_root_url + url, **kwargs)

    def request_log(self, url, method, **kwargs):
        data = dict(**kwargs).get("data")
        json_data = dict(**kwargs).get("json")
        params = dict(**kwargs).get("params")
        headers = dict(**kwargs).get("headers")
        logger.info(f"接口请求的方法>>>{method}")
        logger.info(f"接口请求的地址>>>{self.api_root_url + url}")
        if data is not None:
            logger.info("接口请求的data参数>>>\n{}".format(json.dumps(data, indent=2)))
        if json_data is not None:
            logger.info("接口请求的json_data参数>>>\n{}".format(json.dumps(json_data, indent=2)))
        if params is not None:
            logger.info("接口请求的params参数>>>\n{}".format(json.dumps(params, indent=2)))
        if headers is not None:
            logger.info("接口请求的headers参数>>>\n{}".format(json.dumps(params, indent=2)))

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值