现在手里有个 go web 项目准备上 github ci,现在碰到的问题是不知道在 ci 里如何导入测试数据,因此涉及到连数据库的代码无法跑 go test,求大佬们指点。 之前用过 python 中的 factoryboy 库,可以自动生成数据,感觉 go 里面没有这种库(有可能我不知道),那么在 ci 里测试还挺麻烦的,总不能把.sql 文件放到 repo 里面,然后在 ci 里加载吧。。。求大佬们说说 go web 的 ci 该如何做,蟹蟹!
![]() | 1 janxin 2020-12-29 11:58:42 +08:00 |
![]() | 2 RedisMasterNode 2020-12-29 12:10:55 +08:00 感觉这个问题和 ci 好像没有关系,应该本地也可以做,或者在单元测试上下功夫 patch 查询,安利文章: https://mp.weixin.qq.com/s/eAptnygPQcQ5Ex8-6l0byA |
![]() | 3 andj4cn 2020-12-29 12:38:24 +08:00 涉及数据库的代码不应该被 CI 测试吧,依赖数据库里数据的代码可以对数据 Mock |
![]() | 4 bigNewsMaker OP @janxin 蟹蟹大佬 |
![]() | 5 bigNewsMaker OP @andj4cn mock python 项目依赖数据库的部分可以在 ci 里跑 |
![]() | 6 bigNewsMaker OP @RedisMasterNode 蟹蟹安利 |
![]() | 7 zzzmj 2020-12-29 19:03:08 +08:00 单元测试中 我们一般会起一个 sqlite 。数据的话可能还需要 faker 之类的库 |
8 yuyoung 2020-12-29 20:35:06 +08:00 使用 docker-compose,还是挺方便的 |
![]() | 9 bigNewsMaker OP @zzzmj 用 sqlite 确实可以跑单例,但是实际用的是 mysql 的话,还是要另外测一遍,感觉不是通用做法 |
![]() | 10 merin96 2020-12-30 15:10:17 +08:00 单元测试就用 go test 做了, 集成测试可以像楼上说的用 docker-compose 起一套全部依赖再跑 |