美文网首页
测试平台系列(46) 用例并发之我全都要

测试平台系列(46) 用例并发之我全都要

作者: 米洛丶 | 来源:发表于2021-09-02 16:49 被阅读0次

大家好,我是米洛,求三连!求关注龚仲耗测试开发坑货!

回顾

前一章我们把http换成了aiohttp,完成了数据构造器功能。今天就轻松点吧~

用例运行

目前我们开放了api,/request/run这个接口去运行单个用例。但是我们的目标并不是做一个玩具,所以我们需要想一下怎么去支持多条用例一起执行。

至于测试集,测试计划,定时任务这种也会陆续展开,先把眼前的困难给解决。

所以我们需要在页面上可以多选用例来执行,并能看到一个具体的报告,有了这一步,后续整合测试集和测试计划就易如反掌了。

MQ/celery?

其实是可以用mq的方式去执行用例,用户选定了一批用例,直接往mq里面塞就完事了,剩下的交给消费者。

这样的好处就是耦合度大大降低,我们的后端服务和消费者是完全分开的,就算要这么玩,消费者也不会用Python来做。这样我们在后端服务上线的时候不会影响到执行结果

不过这么做其实增加了我们系统的复杂度,这是我不想要的。

我们还是先观察下Python批量执行case的效率吧!

普通方式

先编写一个同步版本的批量运行方法。

image

由于我的run方法已经被改造为异步方法了,所以这边写法是这么写,但其实还是同步的执行过程。

代码很简单,我们通过循环执行每个case,然后把结果写到data字典里面,最后输出具体的耗时(只是测试用)。

image

可以看到,在本地数据库+我的高配置机器加持下还是需要30多秒执行100来个用例。其实已经能够接受了,但是后续数量更大的话,怎么办!咱们直接一步到位,开始改造。

不只是http有异步库

其实mysql也有个异步库: aiomysql,所以我们需要先安装依赖:

pip3 install aiomysql

这个库可以嵌入到sqlalchemy,因为sqlalchemy1.4以上已经支持了asyncio(我个人认为这是一个大的趋势,能快为啥要慢呢?如果Python有很快的速度+极高的开发效率,不说大型业务服务,起码测试平台的市场是可以拿捏的四死的!)

可能因为我最近Java写的比较多,处理嵌套很深的JSON,需要定义各种class,要不就是各种转换类型,难受啊。

  • config.py新增异步SQLALCHEMY_URI
ASYNC_SQLALCHEMY_URI = f'mysql+aiomysql://{MYSQL_USER}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{DBNAME}'
新增异步session和异步engine
  • 改造同步方法为异步,以获取测试用例方法为例
其实和同步的区别也就4个地方
  1. 需要改为async方法
  2. with语句要改为async with
  3. select(表).where(条件),需要用async_session.execute调用
  4. 拿数据用result.scalars.first()或者all()都可以,和以前几乎一样
改造完了之后记得在调用它的地方也改写一下

改造之后

异步和同步的关键就是gather

虽然没快太多,但是也是有明显进步的,我已经把case运行的方法里面的db操作全部改为了异步。

快了20秒左右

不得不感叹,fastapi还是快的呀!

具体的细节可以参看我的项目: https://github.com/wuranxu/pity

相关文章

  • 测试平台系列(46) 用例并发之我全都要

    大家好,我是米洛,求三连!求关注龚仲耗测试开发坑货! 回顾 前一章我们把http换成了aiohttp,完成了数据构...

  • 记一个ajax下载的坑.md

    背景 我们用了一个开源的测试管理平台,但是这个平台只支持用例用XML导入,用XML来写测试用例那简直就是反人类,因...

  • 测试平台系列(25) 编写用例树

    回顾 上一节我们我们主要针对用户的角色进行添加和修改功能,还剩下查询和删除,这个笔者已经用代码实现了。就不讲解思路...

  • 测试平台系列(58) 设计用例目录

    大家好~我是米洛!我在从0到1打造一个开源平台, 也在编写一套完整的接口测试平台系列教程,希望大家能够多多支持。欢...

  • spring boot blog

    测试平台 用例管理菜单 查询页面 新增用例页面 修改用例页面 修改用例参数(如果未调整过流程)页面 删除用例页面 ...

  • 接口测试的相关总结—持续更新

    什么平台上写接口用例? 公司基于unittest框架二次开发,提供了一个接口测试平台。 接口测试用例设计的原则? ...

  • 测试平台系列(17) 用例逻辑设计

    回顾 很久没有更新文章了,此时已经是23:23了,有些愧疚,因为自己最近交接的事情+生活的事情还是比较多的,所以到...

  • 测试平台系列(59) 调整用例列表页

    大家好~我是米洛!这是一个完整的接口测试平台系列教程,希望能和大家一起学习,从0到1打造一个开源平台。欢迎关注我的...

  • 13.2 并发执行

    当我们有成千上万个自动化测试用例时,为了提高测试用例的执行速度,往往我们需要对测试用例进行并发执行。并发执行的方式...

  • 测试平台系列(29) 编写用例执行的方法

    回顾 上期编写了用例详情页,这期我们快刀斩乱麻,来编写用例执行功能。 编写执行用例的方法 由于之前我们已经编写过了...

网友评论

      本文标题:测试平台系列(46) 用例并发之我全都要

      本文链接:https://www.haomeiwen.com/subject/qllcwltx.html