go语言系统测试代码覆盖率统计(2)-linux+goc+testproject

测试项目:https://github.com/Q1mi/bubble.git

goc:https://github.com/qiniu/goc.git

一.准备linux环境

因为goc目前仅支持linux环境,我觉得安装虚拟机太麻烦了,之前刚好有用过docker,打算用docker创建一个centos的容器使用,又因为测试项目bubble需要用到mysql,所以打算直接安装一个基于centos的mysql容器

启动docker后,搜索镜像

拉取镜像,因为我已经安装该镜像,所以很快就执行完成

创建并启动守护式容器,因为后面需要使用管理员身份,创建容器时加上--privileged=true

docker run -di --name=goctest --privileged=true  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root cent os/mysql-57-centos7

进入容器并切换为root身份

二、连接mysql,密码为空,进入mysql后,创建bubble测试项目所需要的数据库bubble,我之前已经创建了,所以提示数据库已存在

此时也可以用宿主机的navicat连接上容器的数据库,密码为创建容器时设置的密码,即root

三、安装go环境

如使用yum install -y go安装提示,No package go available

更换安装指令如下,可成功安装

yum install -y epel-release
yum install golang

四、安装git

五、下载goc,并执行编译

再进入goc目录下,执行go build

默认安装的go 在 build的时候会出现长时间无响应,有类似如下报如下错误:
go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout
因为默认的go地址被墙了,碰到这种情况则更换地址,更换为七牛云的镜像,直接运行下面两条命令即可:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

设置goc环境变量:PATH=$PATH:/goc/goc

运行 `goc server` 命令启动一个服务注册中心,默认监听端口为7777,该窗口在监控过程中不能关闭

六、下载bubble项目

重新开一个docker窗口2,进入goctest容器中下载bubble测试项目

修改config.ini中的数据库连接信息,此时密码不能为空

运行 `goc build` 命令编译bubble服务,然后启动插过桩的二进制文件,该窗口在测试过程中也必须保持开启状态,可以看到该项目的访问端口是9000

此时服务注册中心也监控到了该服务,ip为容器ip,端口默认为44347

七、进行自动化或手动功能测试

再开一个docker窗口3,进入到容器中发送http请求,请求参数可通过 go语言系统测试代码覆盖率统计(1)  在windows下调试项目时抓包获取

### 新增代办
curl http://127.0.0.1:9000/v1/todo -X POST -H "Content-Type:application/json" -d '{"title":"ddd22"}'
### 删除代办
curl http://127.0.0.1:9000/v1/todo/4 -X DELETE
### 设置待办已完成
curl http://127.0.0.1:9000/v1/todo/8 -X PUT -H "Content-Type:application/json" -d '{"status":true}'
### 设置待办未完成
curl http://127.0.0.1:9000/v1/todo/8 -X PUT -H "Content-Type:application/json" -d '{"status":false}'

查看启动bubble测试项目窗口2的日志,可看到上一步中发送的get,post,delete等请求

八、收集覆盖率数据并生成报告

测试完成后,在窗口3中运行 `goc profile` 命令收集上一步测试的 bubble项目 的代码覆盖率:

将覆盖率数据输出到cov3.out文件:goc profile > cov3.out && go tool cover -func=cov3.out

将cov3.out文件拷贝到宿主机,生成html报告,这里是复制容器的文件到宿主机的当前目录下(需要先退出容器)
docker cp goctest:/goc/bubble/cov3.out cov3.out    

在宿主机的cov3.out目录下,cmd执行命令行指令,生成html报告:
go tool cover -html=./cov3.out -o cov3.html

打开cov3.html,报告如下,原始报告样式比较难看,后面再考虑使用插件优化

完结,撒花!!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值