GoLang基础学习之go test测试
作者:GoGo在努力 发布时间:2024-02-06 16:28:19
1.介绍
Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具; go test 命令是go语言内置的命令
go test命令是一个按照一定约定和组织的测试代码的驱动程序
在我们执行了go tets命令之后,这个命令会自动的帮我们寻找当前包下面在包目录内以_test.go为后缀名的源代码文件进行测试,同时解析内部所有以大写的Test开头的测试函数(注:不会被go build编译到最终的可执行文件中)
2.函数
逻辑行为:比如举一些特例,来检查是否达到预期值
性能基准测试相当于调用10万次或者1万次,看看它的平均的执行时间、内存的是申请、内存的消耗等等
3.测试函数格式
3.1格式
3.2失败示例
如下结构以及代码内容
注:执行完go test后,结构以及代码内容没有任何变化
一个中文所占的字节在uf8中至少占用的都是3个字节,甚至有的是4个字节,问题出现在:s = s[i+1:]这一行
3.3成功示例1
如下结构以及代码内容
注:执行完命令后结构以及代码内容没有任何变化
go test:
显示pass,说明测试用例通过了
3.4成功示例2
如下结构以及代码内容
注:执行完命令后结构以及代码内容没有任何变化
显示pass,说明测试用例通过了
3.5成功示例3
如果有多个测试用例的话,可以写成一个测试组,测试组里可以定义一个测试用例的结构体,然后分别的创建多个测试用例的结构体实例,然后写一个for循环去跑一下这个测试用例
注:执行完命令后结构以及代码内容没有任何变化
go test
go test -v:
可以查看的更详细
3.6成功实例4
注:执行完命令后结构以及代码内容没有任何变化
用t.run的话,里面传入一个匿名函数的话,go test -v可以看的更清晰
go test -run=Split/chinese的换可以指定某个测试用例单独测试
go test -cover校验测试覆盖率(即比如我们的测试函数有6行代码,如果我们的测试用例把这6行代码都执行了,那么这是最好的了,覆盖率是100%,现实情况下很少有100%的情况,测试覆盖率基本上就足够了,
4.基准函数
4.1成功实例1
注:执行完命令后结构以及代码内容没有任何变化
go test -bench=Split :(注意:所有的数据不同的电脑都不一样)
BenchmarkSplit-16: -16是操作系统真正干活的进程数,不同的电脑不一样
1731301是指Spilt执行的次数
629.1ns是指:每一次操作耗费629.1纳秒
go test -bench=Split -benchmem: (注意:所有的数据不同的电脑都不一样)
查看操作的内存的数据
112 B/op: 每一次操作消耗的是112个字节
3 allocs/op : 每一次操作它会做三次的内存申请(通过看这个就可以来做代码优化,由测试来不断优化我们的程序),查看代码后发现原因是append会进行内存申请,现在的解决办法就是用make函数被做统一的内存申请
4.2成功实例2
go test -bench=Split -benchmem: (注意:所有的数据不同的电脑都不一样)
发现各个数据都减少了
4.3性能比较函数
应用场景:某些函数当我们传入的参数变量不一样的话,执行的次数也不一样,这种情景就可以用性能比较函数,比如
总结
来源:https://blog.csdn.net/weixin_52690231/article/details/124810304
猜你喜欢
- request.jsp页面中有rocarsId,和ccrn两个text。 对应在数据库中表格 rocars表的msg_id,ccrn两个字段
- 问题问题1:如何解决事务提交时flush redo log带来的性能损失WAL是实现事务持久性(D)的一个常用技术,基本原理是将事务的修改记
- 本文实例为大家分享了python使用tornado实现简单爬虫的具体代码,供大家参考,具体内容如下代码在官方文档的示例代码中有,但是作为一个
- 解决MySql 数据库 提示:1045 access denied for user 'root'@'localho
- 1.解读tensorflow权重文件,透过 tf.train.NewCheckpointReader函数。2.reader.get_vari
- 核心代码是:browser.execute_cdp_cmd('Network.setUserAgentOverride',
- 之前在某本书上看到一个程序,可以通过 Python 记录下全局范围内的键盘事件,使用的是 ctypes 库。后来几经尝试,始终不能成功运行。
- 废话不多说了,直接给大家贴代码了。import urllibimport urllib2import cookielibdef getImg
- 今天主题是实现并发服务器,实现方法有多种版本,先从简单的单进程代码实现到多进程,多线程的实现,最终引入一些高级模块来实现并发TCP服务器。说
- 目录1. 关联规则1.1 基本概念1.2 关联规则Apriori算法2. mlxtend实战关联规则2.1 安装2.2 简单的例子3. 总结
- 如下所示:import numpy as npnp.set_printoptions(threshold='nan')来源:
- 本文实例讲述了Python实现购物评论文本情感分析操作。分享给大家供大家参考,具体如下:昨晚上发现了snownlp这个库,很开心。先说说我开
- 本文实例讲述了微信小程序实现图片上传、删除和预览功能的方法。分享给大家供大家参考,具体如下:这里主要介绍一下微信小程序的图片上传图片删除和图
- max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_
- 常用的module是 os ,os.path 和shutil,所以要先引入他们. python遍历文件夹和文件
- 爬取xxx天气爬取网址:https://tianqi.2345.com/today-60038.htm安装pip install scrap
- 本文实例讲述了mysql自定义函数原理与用法。分享给大家供大家参考,具体如下:本文内容:什么是函数函数的创建函数的调用函数的查看函数的修改函
- 1 常规错误的yum安装方法:在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7
- 为了庆祝自己的博客重新开放,我在这里放一个自己刚刚写的jquery日期插件, 也许人们会说:日期选取插件已
- 涉及到的函数为import matplotlib.pyplot as pltfrom skimage import measure, col