用例之间都是独立的……这一点该如何实践?

2021-03-19 16:07:57 +08:00
 ebingtel

道理是明白的: 容易实现并发执行测试用例(毕竟目前单线程执行的方式速度太慢了)

但有个测试场景该怎么处理:

测试用例,需要执行 sql 、验证 sql 的正确性, 所以我会: 1 ) 先清空表 2 ) 插入数据 3 ) 执行测试逻辑

如果多个测试用例,会清空同样的表,就无法保证独立性……

能否不清空呢? 比如有时候测试: 没有数据的逻辑……

2195 次点击
所在节点    Python
14 条回复
ruanimal
2021-03-19 16:11:02 +08:00
mock 呗, 除了直接测试数据库,其他都用 mock
liujavamail
2021-03-19 16:12:19 +08:00
用例之间独立,主要是为了防止测试数据的干扰,单个测试用例,测试前后,数据库都应该都是干净的。
111111111111
2021-03-19 16:13:13 +08:00
用例之间独立并不为例并发执行,当然了 如果要并发执行测试,那么用例直接应当”真正的独立”,包括各自使用独立的数据库或其他外部资源
111111111111
2021-03-19 16:14:32 +08:00
例如在 setUp 中为用例创建一个独用数据库(或其他资源)
ebingtel
2021-03-19 16:21:47 +08:00
@ruanimal 只靠 mock 感觉 mock 的量会比较大吧

@liujavamail
@111111111111
@111111111111 目前是在测试之前 dump 一份新的数据库,基于该数据库执行测试用例,然后删除该库
IvanLi127
2021-03-19 17:06:37 +08:00
单测用例,调用数据库的方法应该 mock 掉。
liujavamail
2021-03-19 18:37:07 +08:00
@ebingtel 在 rails 里面, 开发环境和测试环境都有自己独立的数据库, 运行测试代码的时候, 插入数据和删除数据都是在测试的数据库中,所以会比较干净, 并且每个测试用例的需要的数据量并不大, 插入删除,并不会花多少时间, 可以借鉴一下
jones2000
2021-03-20 01:12:46 +08:00
增加预算加机器, 多部署几套 docker 的测试环境不就可以了. 代码都不用改. 以后简历也好看, 参与大规模集群并行测试.
msg7086
2021-03-20 09:22:01 +08:00
事务把请求包起来。
ebingtel
2021-03-22 08:58:46 +08:00
@jones2000 是不是太重了?
xiaolinjia
2021-03-22 10:12:07 +08:00
不是有个 setUpClass 、tearDownClass 类方法吗,清空表的操作,放在 tearDownClass 里不就行了。
jones2000
2021-03-22 19:43:49 +08:00
@ebingtel 装机器,docker 运维部门会做, 环境好了做一个镜像, 然后就可以直接跑用例. 跑完用例用镜像还原, 然后再跑下一个测试用例.
ebingtel
2021-03-23 08:45:59 +08:00
@jones2000 唉 我目前是在 pre-commit 之前 完成 testcase 的 所以希望快点 单个项目被测试的接口大概 50 ~ 100……
angryPHP
2022-12-29 10:22:06 +08:00
遇到同样的问题,楼主后面是怎么处理的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/763233

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX