utils,工具包(存储工具类)---模拟api,发送请求并打印请求,打印log日志------以get请求为例

在这里插入图片描述

模拟api代码

from flask import Flask
from flask import request
import random
app = Flask(__name__)


@app.route("/api/user/stu_info", methods=["GET"])
def stu_info():
    userList = ["小黑", "小白", "小明", "小红"]
    result = {"name": None}
    if request.method == "GET":
        name = request.form.get("name")
        print(name)
        if name in userList:
            result = {"name": name, "age": random.randint(10,30)}
            return result
    return result



if __name__ == "__main__":
    app.run(port=5050)

访问api的代码请求代码


import requests
import traceback
from configgg.conf import log
class HttpRequest():

  def __init__(self,url,data,params=None,is_json=False,headers=None):
    self.url=url
    self.data=data
    self.params=params
    self.is_json=is_json
    self.headers=headers
    self.timeout=3

  def get(self):
      log.info("""开始发请求""")
      log.info("请求接口地址%s"%self.url)
      log.info("请求类型get")

      try:
        if self.params is not None and self.data is None:
          log.info("请求数据%s"%self.params)
          response = requests.get(self.url, params=self.params, headers=self.headers, timeout=self.timeout)
        elif self.data is not None and self.params is None:
          log.info("请求数据%s"%self.data)
          response = requests.get(self.url, data=self.data, headers=self.headers, timeout=self.timeout)
        else:
          response = requests.get(self.url, data=self.data, params=self.params, headers=self.headers, timeout=self.timeout)
      except Exception as e:
        result={"status":400,"error":traceback.format_exc()}
        log.error("请求异常",traceback.format_exc())
      else:
        result = HttpRequest.reponse_dict(response)
        log.info("返回数据%s"%result)
        log.info("""完成发请求""")
        return result
  def post(self):
    log.info("""开始发请求""")
    log.info("请求接口地址%s"%self.url)
    log.info("请求类型post")
    if self.is_json:
          requests.post(self.url,json=self.data)
    else:
          requests.post(self.url,data=self.data)


  @staticmethod
  def reponse_dict(response):
        try:
          result=response.json()
        except Exception as e:
          result=response.text
        return result

if __name__=='__main__':
  url="http://127.0.0.1:5050/api/user/stu_info"
  dict={"name":"小黑"}
  req=HttpRequest(url,dict)
  req.get()




所有的配置

import os
from utils.logger import Logger
# from log.logger import Logger

BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# print(BASE_PATH)
# print("os.path.abspath(__file__):", os.path.abspath(__file__))
# print("os.path.dirname:", os.path.dirname(os.path.abspath(__file__)))
# print("os.path.dirname:", os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

CASE_PATH = os.path.join(BASE_PATH, "cases")
REPORT_PATH = os.path.join(BASE_PATH, "report")
LOG_PATH = os.path.join(BASE_PATH, "log")
log=Logger("utp-autotest",LOG_PATH).get_log()
#报错的主要原因是循环依赖,
DATA_PATH = os.path.join(BASE_PATH, "data")
MYSQL_INFO = {
    "host": "",
    "user": "",
    "password": "",
    "port": 3306,
    "db": "",
    "charset": 'utf8',
    "autocommit": True,
}

REDIS_INFO = {
    "host": "",
    "password": "",
    "port": 6379,
    "db": 0,
}

Python打印日志需要调用的方法



import logging
import os
# from configgg.conf import LOG_PATH
# print(LOG_PATH)
# log_path = os.path.dirname(getcwd.get_cwd())
# print(log_path)
class Logger:
    def __init__(self, loggername,log_path="."):
        # 创建一个logger
        self.logger = logging.getLogger(loggername)
        self.logger.setLevel(logging.DEBUG)
        self.log_path=log_path

        # 创建一个handler,用于写入日志文件
        # log_path = os.path.dirname(getcwd.get_cwd())+"/logs/" # 指定文件输出路径,注意logs是个文件夹,一定要加上/,不然会导致输出路径错误,把logs变成文件名的一部分了
        #log_path = "./logs/"  # 指定文件输出路径,注意logs是个文件夹,一定要加上/,不然会导致输出路径错误,把logs变成文件名的一部分了
        logname = os.path.join(self.log_path,'utp.log')  # 指定输出的日志文件名
        fh = logging.FileHandler(logname, encoding='utf-8')  # 指定utf-8格式编码,避免输出的日志文本乱码
        fh.setLevel(logging.DEBUG)

        # 创建一个handler,用于将日志输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)

        # 定义handler的输出格式
        formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
        fh.setFormatter(formatter)
        ch.setFormatter(formatter)

        # 给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)

    def get_log(self) -> object:
        """定义一个函数,回调logger实例"""
        return self.logger


if __name__ == '__main__':
  #  t = Logger("hmk").get_log().debug("User %s is loging" % 'jeck')
    log=Logger("udp").get_log()
    log.info("xxx")
    log.debug("XXX")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
是的,Axios 允许我们自定义请求头和超时时间。我们可以在创建 Axios 实时传递一个配置对象,其中可以包含一个 `headers` 属性和一个 `timeout` 属性。 以下是一个示,展示了如何自定义请求头和超时时间: ```javascript import axios from 'axios'; // 创建一个 Axios 实 const instance = axios.create({ baseURL: 'http://api.example.com', timeout: 10000, // 请求超时时间 headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer xxxxxxxx' // 自定义请求头 } }); // 定义一个请求方法 export function request(method, url, data) { return instance({ method: method, url: url, data: data }); } // GET 请求方法 export function get(url, params) { return request('get', url, { params: params }); } // POST 请求方法 export function post(url, data) { return request('post', url, data); } ``` 在上面的示中,我们在创建 Axios 实时,传递了一个配置对象,其中包含了一个 `headers` 属性和一个 `timeout` 属性。我们可以在 `headers` 属性中自定义请求头,在 `timeout` 属性中设置请求超时时间。然后在 `request`、`get`、`post` 方法中使用这个 Axios 实发送请求如,我们可以在发送请求时,自定义一个 Authorization 请求头: ```javascript import { get } from './axios-utils'; // GET 请求 get('/users', { page: 1 }, { headers: { 'Authorization': 'Bearer yyyyyyyy' } }).then(response => { console.log(response.data); }).catch(error => { console.log(error); }); ``` 在上面的示中,我们在调用 `get` 方法时,传递了一个配置对象,其中包含了一个 `headers` 属性,该属性包含了一个自定义的 Authorization 请求头。这样发送请求时,就会使用这个自定义的请求头。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值