• 测试平台系列(26) 编写用例详情页(1)


    回顾

    上一节我们已经编写了用例树的雏形,但是具体的用例页面还没有去编写,加上笔者停更了几天,所以进度就更缓慢了。

    不过我们在此之前,我们先改一下antd pro的全局配置,那就是: 字体。

    修改字体

    在对应的目录下,新增这样一个参数: font-size-base,因为12px会显得太小,而14px而会显得文字比较大,虽然不符合设计逻辑(偶数像素),但是感觉13px效果也挺不错。

    编写用例后端部分

    编写参数校验方法

    在此之前呢,我们需要先新增一个装饰器,用来校验参数,这边不打算采用pydantic,打算用jsonschema了,虽然感觉前者更好,但是我只是这个接口想用了,说白了,就是玩儿!

    为什么我们需要这个方法呢,因为我们对于一个TestCase对象来说,对每个参数进行校验,实在是太麻烦了,所以这里我受不了了。

    app/utils/decorator.py

    这个方法呢,先获取json数据,如果没获取到则直接抛出异常,否则调用jsonschema库的validate方法,也就是校验参数。

    不过这个方法有一个弊端就是,只能校验json数据,说的很对!如果有url参数怎么办,那是不支持的,算了后续再说吧,毕竟我现在主要要解决的不是这个。

    pip3 install jsonschema
    

    别忘了安装这个新库哦,如果是新玩家,直接按照requirements.txt安装即可。

    编写新增用例的方法

    • 修改用例model

    因为之前新增了目录优先级2个字段,所以需要在__init__方法中加入这2个字段。

    • 新增insert方法

    TestCaseDao.py

    如果项目id和名字都一样,则认为这个用例已存在,不允许用户继续添加。

    这边对于权限限制的不是很死,没有再校验用户是否能够为项目添加用例

    • 添加接口

      编辑app/controllers/testcase/testcase.py

    注意这里我们引入了json_validate装饰器,是用来校验咱们的json参数的。

    • testcase数据
    testcase = {
        "type": "object",
        "properties": {
            "id": {
                "type": "integer",
            },
            "name": {
                "type": "string",
            },
            "request_type": {
                "type": "integer",
            },
            "url": {
                "type": "string",
            },
            "request_method": {
                "type": "string",
            },
            "request_header": {
                "type": "string",
            },
            "params": {
                "type": "string",
            },
            "body": {
                "type": "string",
            },
            "project_id": {
                "type": "integer",
            },
            "tag": {
                "type": "string",
            },
            "status": {
                "type": "integer",
            },
            "priority": {
                "type": "string",
            },
            "catalogue": {
                "type": "string",
            },
            "expected": {
                "type": "string",
            },
        },
        "required": ["expected", "catalogue", "priority", "status", "project_id", "request_type", "url", "name"]
    }
    
    

    其实json_schema就是一个描述json数据结构的一串json,也许这个很绕口,但是看图中可以看出:

    • type

      type是json串的类型,object代表的是一个对象,其实JSON为什么叫JSON,因为她的全名是: JavaScript Object Notation,简单的说她就是来描述JSON对象的。除此之外,还有integer, string等等。

    • properities

      就是这个对象里面的属性,即字段。

    • required

      一个数组,存放数组必须的字段。

    测试一下

    • 去掉一个必须字段catalogue

    json schema还有控制数字范围等校验,这里我就不多讲了,大家有兴趣可以自行查阅。

    今天内容不多,多了怕消化不良。改天可能研究一下httprunner,毕竟这个也是业界主流项目,合适的话就给兼容了吧,这样平台受众面也会比较大。

  • 相关阅读:
    Linux下常用压缩格式的压缩与解压方法
    FreeBSD内核编译
    How to enable a Virtualbox shared folder for Linux guest systems
    VBA删除空白行列
    freebsd 隐藏ssh版本号
    常用端口大全
    fcitx无法切换到中文(manjaro)
    关机报 at-spi-bus-launcher
    内核参数和GRUB&GRUB2
    Linux 串口调试工具汇总
  • 原文地址:https://www.cnblogs.com/we8fans/p/15024071.html
Copyright © 2020-2023  润新知