python3 接口自动化测试模板,post/get请求

'''
    http_request是主方法,直接供外部调用
    __http_get, __http_post是实际底层分类调用方法
   参考王浩然大大的python接口自动化
'''
import requests
import os
import logging
import sys
import config
# config是自己定义的路径文件,内容如下
'''
    # 返回当前代码所在目录的上级目录
    src_path=os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
'''
class RequestInterface(object):
    # 定义处理不同类型的请求参数、包含字典、字符串、空值
    def __new_param(self,param):
        try:
            if isinstance(param,str) and param.startwith('{'):
                new_param=eval(param)
            elif param==None:
                new_param=''
            else:
                new_param=param
        except Exception as error:
            new_param=''
            logging.basicConfig(filename=config.src_path+'/log/syserror.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
            logger=logging.getLogger(__name__)
            logger.exception(error)
        return new_param            

    # post请求,参数在body中
    def __http_post(self,interface_url,interface_param):
        '''
            interface_url:接口地址
           
            interface_param:接口请求参数
            return 返回字典形式结果
        '''
        try:
            if interface_url!='':
                temp_interface_param=self.__new_param(interface_param)
                response=requests.post(url=interface_url,params=temp_interface_param,verify=False,timeout=10)
                if response.status_code==200:
                    result={'code':'0000','message':'成功','data':response.text}
                else:
                    result={'code':'2004','message':'接口返回状态错误','data':[]}
            elif interface_url=='':
                result={'code':'2002','message':'接口地址参数为空','data':[]}
            else:
                result={'code':'2003','message':'接口地址错误','data':[]}    
        except Exception as e:
            result={'code':'9999','message':'系统异常','data':[]}
            logging.basicConfig(filename=config.src_path+'/log/syserror.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
            logger=logging.getLogger(__name__)
            logger.exception(e)
        return result               


    # get请求,参数在接口地址后面
    def __http_get(self,interface_url,interface_param):
        '''
            interface_url:接口地址
            
            interface_param:接口请求参数
            return 返回字典形式结果
        '''
        try:
            if interface_url!='':
                temp_interface_param=self.__new_param(interface_param)
                # requrl=interface_url+temp_interface_param
                response=requests.get(url=interface_url,params=temp_interface_param,verify=False,timeout=10)
                if response.status_code==200:
                    result={'code':'0000','message':'成功','data':response.text}
                else:
                    result={'code':'3004','message':'接口返回状态错误','data':[]}
            elif interface_url=='':
                result={'code':'3002','message':'接口地址参数为空','data':[]}
            else:
                result={'code':'3003','message':'接口地址错误','data':[]}    
        except Exception as e:
            result={'code':'9999','message':'系统异常','data':[]}
            logging.basicConfig(filename=config.src_path+'/log/syserror.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
            logger=logging.getLogger(__name__)
            logger.exception(e)
        return result             

    # 统一处理http请求
    def http_request(self,interface_url,interface_param,request_type):
        '''
            interface_url:接口地址
            
            interface_param:接口请求参数
            request_type:请求类型
            return 返回字典形式结果
        '''        
        try:
            if request_type=='get' or request_type=='GET':
                result=self.__http_get(interface_url,interface_param)
            elif request_type=='post' or request_type=='POST':
                result=self.__http_post(interface_url,interface_param)
            else:
                result={'code':'1000','message':'请求类型错误','data':request_type}
        except Exception as e:
            result={'code':'9999','message':'系统异常','data':[]}
            logging.basicConfig(filename=config.src_path+'/log/syserror.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
            logger=logging.getLogger(__name__)
            logger.exception(e)
        return result

# https://www.baidu.com/s?wd=%E6%B5%8B%E8%AF%95%E5%B8%B8%E7%94%A8%E5%88%B0%E6%8E%A5%E5%8F%A3%E5%9C%B0%E5%9D%80
requestDemo=RequestInterface()
url='https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?'
param={'tel':'186xxxxxxx'}
result=requestDemo.http_request(url,param,'post')
print(result['data'])

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值