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


猜你喜欢
- 第一种:获取不带后缀的文件名,直接上代码:就是直接用basename()函数就可以返回路径中的文件名部分,其语法是“basename(pat
- 代码很简洁,功能很实用,这里就不多废话了,直接奉上:<?php/** * 获取客户端IP * @param&nbs
- 今天继续给大家介绍Linux运维相关知识,本文主要内容是SQL bool盲注和时间盲注。免责声明:本文所介绍的内容仅做学习交流使用,严禁利用
- 本文实例为大家分享了python使用tornado实现简单爬虫的具体代码,供大家参考,具体内容如下代码在官方文档的示例代码中有,但是作为一个
- 前言随着微信的普及,越来越多的人开始使用微信。微信渐渐从一款单纯的社交软件转变成了一个生活方式,人们的日常沟通需要微信,工作交流也需要微信。
- 啥都不说了,直接奉献原代码 代码如下:'==========注意==================================
- 我们通常会使用 apt-get或者是pip来安装包,但是这两者的安装路径是不一样的,区别如下:如果使用pip或者pip3安装,则第三方包在:
- 0. 学习目标栈和队列是在程序设计中常见的数据类型,从数据结构的角度来讲,栈和队列也是线性表,是操作受限的线性表,它们的基本操作是线性表操作
- 前言:Unittest又名单元测试,主要用于测试自己写的代码的正确性和完备性,也方便自己和他人对代码的维护。在软件开发过程中,测试驱动开发的
- 前言Python提供了多个内置模块用于操作日期时间,像 calendar,time,datetime。time模块提供的接口与C标准库 ti
- 首字母为英文和下划线,其它部分则可以是英文、数字和下划线(即:_),而变量名称是区分大小写,即变量temp与Temp为不同变量。变量的基本用
- 老师罚学生抄写英文单词,结果学生给抄成这样……
- 散点图散点图是指在 回归分析中,数据点在直角坐标系平面上的 分布图,散点图表示因变量随 自变量而 变
- 1. imageZMQ库实现imageZMQ库链接:https://github.com/jeffbass/imagezmq该库原本是用于树
- go和golang之间有区别吗?go和golang之间没有区别,go就是golang,全名是golang,简称go语言。Go(又称 Gola
- 程序如下:<%Function GetEmploymentStatusListDim dd = Ap
- 1、使用 append 函数来为列表 list 添加数据,默认将数据追加在末尾。# !usr/bin/env python# -*- cod
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- 目录一、binlog的三种模式1.statement level模式2.rowlevel模式3.mixed模式二、我们使用binlog时应该
- 确定数据库内有多少记录,或者确定有多少记录达到了某些标准,这些用ASP完成并非难事。如果你采用了正确的游标类型,你可以用RecordCoun