• 测试平台系列(64) 用Sqlalchemy填下断言的坑


    大家好~我是米洛


    这是一个完整的接口测试平台系列教程,希望能和大家一起学习,从0到1打造一个开源平台。



    欢迎关注我的公众号测试开发坑货,获取最新文章教程!

    回顾

    上一节我们讲了软删除,一个看似无关紧要却又很严肃的问题。如今我们来填一下之前的坑

    之前埋的坑

    之前我们在用例详情页面,只是让用户可以添加断言,但是没有支持编辑和删除的功能,甚至连展示的页面都冇,那今天我们就来好好填坑:

    完成这块的编辑和删除功能。

    老规矩

    做完之前,看下当前的效果图:

    提供了一个小小的页面

    其实就是在断言 tab下面写了个curd的小页面

    后端的改动

    之所以把这一节单独拉出来讲,是因为以往我们都是新增/编辑数据以后,去请求一次list接口,等于是请求了2次。

    这次我们换个方向,请求后直接拿到最新的那条数据,然后整合到现有的table之中。

    其实之所以这么做,是因为我这个页面很大,里面有case的很多信息,涉及到多个表,局部数据的刷新我又不想单独包装一个接口。

    让我们看看怎么做吧!

    了解SqlAlchemy的机制

    SqlAchemy是一款大家比较熟悉的orm库,在我的使用过程中发现一个特点:

    比如我新建了一个model,使用session.add更新到db里面,如果是同步session则还需要commit操作。

    但我们如今的需求是,insert到数据库之后拿到最新的数据。其实sqlalchemy会默认把之前插入过的数据销毁掉,也可能不是销毁,反正就是session结束了之后,数据将不复存在

    所以我们百度查了一下,有这样一个方法,可以保留原先的数据:

    session.expunge(data)
    

    编写新增断言的接口

    新增的接口和之前的区别就在这了

    首先用session.flush()等待数据更新,refresh可以帮助我们拿到insert之后的id。

    最后我们用expunge方法,保留这个对象,再返回即可。

    编写编辑断言的接口

    和新增类似

    编辑和新增类似,但因为我们不需要获取主键id,因为咱们本来就有,所以只需要expunge即可。

    编写删除断言的接口

    删除也是一种update

    因为软删除的缘故,我们实际上执行的也是update操作。

    这样断言的编辑/删除就完成了

    新增执行用例的功能

    其实很简单,调用一下之前的接口即可。看看图吧~

    执行下看看效果


    至此,一个case的百分之80的执行流程就已经完毕了。接下来还是有很多事情需要做的:

    • 定时任务执行case
    • 用例变量/全局变量目前应该还没应用到断言之中
    • 断言还不支持JSON对比等等
    • 用例评分系统
    • 用户操作记录
    • 工作台未完成
    • 用户资料修改
    • 用户管理功能
    • 七牛云/阿里云oss接入
    • 其他前置条件类型
    • 后置条件

    ......


    就以上已经有很多内容了,更别说未来的:

    • 数据工厂

    • 精准测试等等

      不过话说回来,这个平台希望的就是真正从0到1做成一个完全体的平台,慢慢填坑吧~

  • 相关阅读:
    游戏《翻转方块》小攻略
    净捡软柿子捏--jQuery 遍历方法
    关于兼容
    sublime
    jQuery中json对象与json字符串互换
    css之IE透明度
    关于优化
    html5+css+div随时笔记
    css3学习--border
    JavaScript学习1
  • 原文地址:https://www.cnblogs.com/we8fans/p/15319521.html
Copyright © 2020-2023  润新知