zoukankan      html  css  js  c++  java
  • 测试平台系列(78) 编写Redis配置管理功能(上)

    大家好~我是米洛

    我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持。

    欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

    回顾

    上一节我们编写了测试计划相关功能。由于我们的数据构造器(前置条件)还有一些不完善的,所以我们这段时间要开始完善redis相关内容。

    如果把redis看做数据库的话,我们也是需要编写对应的连接配置页面的,编写完以后我们需要接入前置条件,也得能够在页面上在线执行redis命令。这些都会是接下来几天的任务。

    成果图

    设计Redis配置表

    redis和mysql比较类似,有一些共通的部分:

    • host

    • port

    • username

    • password

    • database

      在redis中是一片一片的db,一般是0-15。而Mysql则是一个具体的库。

      除此之外,二者区别很小。主要提现在:

    • redis分为集群和单例模式,集群是可以不输入用户密码的

    • 一般redis的连接串会把host和port合到一起,便于我们进行集群管理

      所以总结起来就是,我们基本可以照搬MySQL配置表。

    from sqlalchemy import Column, INT, String, Boolean, UniqueConstraint
    
    from app.models.basic import PityBase
    
    
    class PityRedis(PityBase):
        __tablename__ = "pity_redis_info"
        __table_args__ = (
            UniqueConstraint('env', 'name', 'deleted_at'),
        )
    
        env = Column(INT, nullable=False)  # 对应环境id
        name = Column(String(24), nullable=False)  # redis描述名称
        addr = Column(String(128), nullable=False)
        username = Column(String(36), nullable=False)
        password = Column(String(64), nullable=False)
        db = Column(INT, nullable=False)
        # 是否是集群,默认为false,集群可不输入用户密码
        cluster = Column(Boolean, default=False, nullable=False)
    
        def __init__(self, env, name, addr, username, password, db, cluster, user):
            super().__init__(user)
            self.env = env
            self.name = name
            self.addr = addr
            self.password = password
            self.username = username
            self.db = db
            self.cluster = cluster
    
    

    可以看到,他几乎和MySQL差不多。那我们来按照管理编写增删改查接口。

    编写Dao层

    其实按照惯例,我估计又从之前的DbConfigDao.py复制出代码然后改一改了。

    但这次我不打算这么做了,因为其实每次写的增删改查代码虽然不完全一样,但都很像啊!!!

    所以如果能有个办法可以省略这些操作,那么一个后端接口就很快能够写出来了~

    对于我们这样简易的接口测试平台,是事半功倍的。


    其实思路来源于Mybatis Plus,这个框架的好处就是封装了selectList,selectById等常用api,导致哥们都不需要编写具体的select方法,直接传入查询条件就可以了。

    update更是离谱,传入一个新对象即可。

    所以可以看到具体的mapper都是继承BaseMapper,就可以完成对应的操作。

    可能大家没有具体的概念,我先给大家展示下半成品:

    可以看到类里面都没有任何方法

    使用方式

    可以看到,需要精确查找就直接传入,需要模糊查询的则加上like。

    看起来是非常美好,有兴趣的朋友可以测试一下。

    今天的内容到这就结束了,下一节我们继续完善这个Mapper基类中的方法,并实现一个完整的demo简化开发。

    思路虽然是原创,但难免和其他人碰到一起,其实大家做的测试平台思路大体都是一致的,所以如果遇到高度相似的,真的还是纯属巧合。

  • 相关阅读:
    springboot:springboot初识(相关概念、新建项目)
    ssm项目无法加载静态资源
    js:初识(相关概念、js代码的书写位置、注释方式、输入输出语句)
    lucene:索引维护(删除、更新、查询)
    数据库连接池:Durid(执行流程、工具类)
    redis:HyperLogLog&发布订阅(HyperLogLog的概念和命令、redis的发布订阅)
    redis:zset(赋值、取值、删除、修改分数)
    css:css3新特性(过渡)
    css:css3新特性(盒子模型的box-sizing属性、图片模糊处理、calc函数)
    css:css3新特性(属性选择器、结构伪类选择器)
  • 原文地址:https://www.cnblogs.com/we8fans/p/15588122.html
Copyright © 2011-2022 走看看