【自动化测试】go自动化测试代码覆盖率
背景:公司的后端大部分是go写的,只有数据模块是java,调研了一下发现go的自动化代码覆盖率测试的实施比java复杂一点,因为go自带的覆盖率测试工具go test只适用于单元测试,而我们需要在服务部署后去执行自动化测试用例(当然这个方案也适用于系统测试覆盖率统计),当用例执行完后实时去获取覆盖率结果,所以最后是选择了七牛云团队开源的goc工具去做。
- 下载goc文件
因为我们研发环境连不上外网,所以是需要通过离线安装,去github上面下载最新的goc文件
https://github.com/qiniu/goc/releases/tag/v1.4.5
如果是自己调研或者能连外网的可以直接通过在线安装,
# Mac/AMD64
curl -s https://api.github.com/repos/qiniu/goc/releases/latest | grep "browser_download_url.*-darwin-amd64.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin
# Linux/AMD64
curl -s https://api.github.com/repos/qiniu/goc/releases/latest | grep "browser_download_url.*-linux-amd64.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin
# Linux/386
curl -s https://api.github.com/repos/qiniu/goc/releases/latest | grep "browser_download_url.*-linux-386.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs -n 1 curl -L | tar -zx && chmod +x goc && mv goc /usr/local/bin
-
给二进制文件插桩
把goc放到编译的路径下,编译命令加上 goc build . 编译目标服务即可,我们公司实际情况是会同时起好几个服务,所以会加上agentport去区分每个服务。
-
jenkins执行部署服务及自动化测试,替换插桩后的二进制文件
jenkins上触发自动化测试,因为我们的自动化是一键部署,我这边没有权限去修改部署脚本,只能在部署后去替换二进制文件。
下面是替换二进制文件的部分代码
-
执行自动化测试,先通过goc server开启goc监控服务,再开始执行测试用例
我是把开启的命令写进了启动脚本里,如下
-
测试用例执行完成后回收测试结果test.cov文件
goc profile -o test.cov
代码实现如下
6. 输出覆盖率测试结果:将test.cov文件放到编译的路径下,执行命令go tool cover -func=test.cov生成txt后缀的覆盖率报告
原文地址:https://blog.csdn.net/wyqvong/article/details/136043037
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!