测试平台系列(30) 完善断言部分.md

2022/6/13 测试平台接口测试FastApiPythonReact

# 思考

这个系列满打满算已经一个月没有更新了,咱虽然水文,但是正事还是得干的。其实有时候我在想,类似的平台已经有饭佬这座高山了,我还真的有写下去的必要吗?不管怎么说,写点自己喜欢的内容吧,哪怕是写给自己看也成,毕竟自己暂时没有再做其他方面的平台了。

# 回顾

上次写到了用例详情页面,可以添加对应的用例了并在线执行了~

理性分析一下,咱们还缺啥?其实不用分析,缺的东西很多,比如: 调试结果怎么展示,测试集怎么做,最终测试报告,全局变量等等。

由于最近做的都是业务测试,有涉及到接口部分的,所以我针对自己的使用,给自己提了一些优化的内容。

因为平时Yapi用的也比较多,所以个人还是决定与Yapi进行打通,根据yapi的接口文档去智能地生成一些基础用例。

大家如果有想法,也可以和我讨论,欢迎➕我的微信: wuranxu。目前呢,有些地方我也没有确定清楚,以上都是我在真实使用过程中遇到的一些不好的地方。

自己做的东西,自己一定要亲身去体验,这样才知道哪里不顺手,哪里不好用。听取别人的建议是关键,自己有切身体会也是关键。

# 修复sqlalchemy连接的问题

在我自己使用的过程中,发现sqlalchemy的Session会自动过期。啥意思呢,默认的Session建立的时候,连接是不会被释放的。但是呢,mysql的每个连接会有个默认的过期时间,因为一个连接如果长时间不工作,就是浪费资源,所以Mysql有这样的设定。

图中可以看到超时时间是1800秒也就是30分钟

这样就出现,sqlalchemy取出的session在mysql中已经过期了,通俗点来讲就是,你30分钟没有用平台,再调涉及到数据库的接口的时候,就提示你Mysql Connection not variable。

  • 添加pool_recycle参数(缩短我们连接回收的时间,小于wait_timeout)

  • 扩大Mysql的超时时间,这个需要改mysql配置文件中的wait_timeout参数,有的人会设置为8小时

# 添加编辑用例的功能

  • 后端接口改造,编写update功能

这边有一点需要注意,先通过testcase的id和deleted_at字段取到数据,然后调用了update_model方法,这个方法的作用是啥呢,就是通过setattr把Form表单的内容赋予这个数据库对象。

以往我们的手段都很拙劣,如果要修改testcase这个对象,我们会用data.xxx = xxx,这样效率较低,而且代码量很多。由于我们和Pydantic进行了打通,里面接受的字段名字和我们db中的字段名字是一样的,所以我们可以写一个通用的办法。

  • dist参数是被修改的对象
  • source是Pydantic的BaseModel,也就是咱们在web页面的表单数据
  • not_null是个可选参数,如果是True的话,那么只有非空字段会被更新,这点借鉴了gorm
  • update_user,由于我们的每条数据都带有这个updated_at, update_user信息,所以在update的时候我们自动设置为当前时间

# 注释:

setattr可以动态设置对象的属性,第一个参数是对象,第二个参数是字段名,第三个参数是具体的值,与之对应的还有getattr

# 后端接口层

  • 前端逻辑的改造pityWeb\src\components\TestCase\TestCaseDetail.jsx

和创建逻辑类似,在点击保存按钮的时候,调用onFinish方法,先去搜集表单的数据,url,headers等等,最后调用updateTestCase接口。最后就是调用init()方法重新获取用例的数据。

# 调整一下用例树

放弃之前的突兀地让用户选择用例,以说明书的方式让用户明白需要点击左侧的树。左侧的树后面需要可以选中,以便于执行多条用例测试集添加等等。

# 用例详情调整

先说明一下,这块我一直觉得不是太美观,我只能说这肯定不是最终效果。我把headers替换成了表格,把body替换成为了json,因为我们暂时只支持JSON。

高亮代码块,需要安装react-syntax-highlighter

npm install react-syntax-highlighter --save
1
  • 使用

先导入对应的库和样式,我这里选择的是vs2015,再把字符串放入SyntaxHighlighter组件内即可。

# 后续预告

  • 系统设置

    包括yapi相关配置,用例与yapi的打通,自动生成用例。

  • 测试报告

    测试用例执行详情展示等。

  • 全局变量

    包括环境配置,地址管理等等。

  • 定时任务

    这块可能用go去写,也可能用celery。

  • 测试集

    待定。

前端代码仓库: https://github.com/wuranxu/pityWeb (opens new window)

后端代码仓库: https://github.com/wuranxu/pity (opens new window)