
道理是明白的: 容易实现并发执行测试用例(毕竟目前单线程执行的方式速度太慢了)
但有个测试场景该怎么处理:
测试用例,需要执行 sql 、验证 sql 的正确性, 所以我会: 1 ) 先清空表 2 ) 插入数据 3 ) 执行测试逻辑
如果多个测试用例,会清空同样的表,就无法保证独立性……
能否不清空呢? 比如有时候测试: 没有数据的逻辑……
1 ruanimal 2021 年 3 月 19 日 mock 呗, 除了直接测试数据库,其他都用 mock |
2 liujavamail 2021 年 3 月 19 日 用例之间独立,主要是为了防止测试数据的干扰,单个测试用例,测试前后,数据库都应该都是干净的。 |
3 111111111111 2021 年 3 月 19 日 用例之间独立并不为例并发执行,当然了 如果要并发执行测试,那么用例直接应当”真正的独立”,包括各自使用独立的数据库或其他外部资源 |
4 111111111111 2021 年 3 月 19 日 例如在 setUp 中为用例创建一个独用数据库(或其他资源) |
5 ebingtel OP @ruanimal 只靠 mock 感觉 mock 的量会比较大吧 @liujavamail @111111111111 @111111111111 目前是在测试之前 dump 一份新的数据库,基于该数据库执行测试用例,然后删除该库 |
6 IvanLi127 2021 年 3 月 19 日 单测用例,调用数据库的方法应该 mock 掉。 |
7 liujavamail 2021 年 3 月 19 日 @ebingtel 在 rails 里面, 开发环境和测试环境都有自己独立的数据库, 运行测试代码的时候, 插入数据和删除数据都是在测试的数据库中,所以会比较干净, 并且每个测试用例的需要的数据量并不大, 插入删除,并不会花多少时间, 可以借鉴一下 |
8 jones2000 2021 年 3 月 20 日 增加预算加机器, 多部署几套 docker 的测试环境不就可以了. 代码都不用改. 以后简历也好看, 参与大规模集群并行测试. |
9 msg7086 2021 年 3 月 20 日 事务把请求包起来。 |
11 xiaolinjia 2021 年 3 月 22 日 不是有个 setUpClass 、tearDownClass 类方法吗,清空表的操作,放在 tearDownClass 里不就行了。 |
12 jones2000 2021 年 3 月 22 日 @ebingtel 装机器,docker 运维部门会做, 环境好了做一个镜像, 然后就可以直接跑用例. 跑完用例用镜像还原, 然后再跑下一个测试用例. |
13 ebingtel OP @jones2000 唉 我目前是在 pre-commit 之前 完成 testcase 的 所以希望快点 单个项目被测试的接口大概 50 ~ 100…… |
14 angryPHP 2022 年 12 月 29 日 遇到同样的问题,楼主后面是怎么处理的? |