测试平台系列(30) 完善断言部分
思考
这个系列满打满算已经一个月没有更新了,咱虽然水文,但是正事还是得干的。其实有时候我在想,类似的平台已经有饭佬这座高山了,我还真的有写下去的必要吗?不管怎么说,写点自己喜欢的内容吧
,哪怕是写给自己看也成,毕竟自己暂时没有再做其他方面的平台了。
回顾
上次写到了用例详情页面,可以添加对应的用例了并在线执行
了~
理性分析一下,咱们还缺啥?其实不用分析,缺的东西很多,比如: 调试结果怎么展示,测试集怎么做,最终测试报告,全局变量等等。
由于最近做的都是业务测试,有涉及到接口部分的,所以我针对自己的使用,给自己提了一些优化的内容。
因为平时Yapi
用的也比较多,所以个人还是决定与Yapi进行打通,根据yapi的接口文档去智能地生成一些基础用例。
大家如果有想法,也可以和我讨论,欢迎➕我的微信: wuranxu
。目前呢,有些地方我也没有确定清楚,以上都是我在真实使用过程中遇到的一些不好的地方。
自己做的东西,自己一定要亲身去体验,这样才知道哪里不顺手,哪里不好用。听取别人的建议是关键,自己有切身体会也是关键。
修复sqlalchemy连接的问题
在我自己使用的过程中,发现sqlalchemy的Session会自动过期。啥意思呢,默认的Session建立的时候,连接是不会被释放
的。但是呢,mysql的每个连接会有个默认的过期时间,因为一个连接如果长时间不工作,就是浪费资源
,所以Mysql有这样的设定。
这样就出现,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
- 使用
先导入对应的库和样式,我这里选择的是vs2015,再把字符串放入SyntaxHighlighter组件内即可。
后续预告
-
系统设置
包括yapi相关配置,用例与yapi的打通,自动生成用例。
-
测试报告
测试用例执行详情展示等。
-
全局变量
包括环境配置,地址管理等等。
-
定时任务
这块可能用go去写,也可能用celery。
-
测试集
待定。
前端代码仓库: https://github.com/wuranxu/pityWeb
后端代码仓库: https://github.com/wuranxu/pity