GoLang基础学习之go test测试

目录
  • 1.介绍
  • 2.函数
  • 3.测试函数格式
    • 3.1格式
    • 3.2失败示例
    • 3.3成功示例1
    • 3.4成功示例2
    • 3.5成功示例3
    • 3.6成功实例4
  • 4.基准函数
    • 4.1成功实例1
    • 4.2成功实例2
    • 4.3性能比较函数
  • 总结

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性能比较函数

应用场景:某些函数当我们传入的参数变量不一样的话,执行的次数也不一样,这种情景就可以用性能比较函数,比如

总结

到此这篇关于GoLang基础学习之go test测试的文章就介绍到这了,更多相关GoLang go test测试内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Go语言自带测试库testing使用教程

    目录 简介 单元测试 表格驱动测试 分组和并行 主测试函数 其他 性能测试 其他选项 示例测试 总结 简介 testing是 Go 语言标准库自带的测试库.在 Go 语言中编写测试很简单,只需要遵循 Go 测试的几个约定,与编写正常的 Go 代码没有什么区别.Go 语言中有 3 种类型的测试:单元测试,性能测试,示例测试.下面依次来介绍. 单元测试 单元测试又称为功能性测试,是为了测试函数.模块等代码的逻辑是否正确.接下来我们编写一个库,用于将表示罗马数字的字符串和整数互转.罗马数字是由M/D/

  • Go语言测试库testify使用学习

    目录 简介 准备工作 assert Contains DirExists ElementsMatch Empty EqualError EqualValues Error ErrorAs ErrorIs 逆断言 Assertions 对象 require mock suite 测试 HTTP 服务器 总结 简介 testify可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了.testify提供了很多方便的函数帮助我们做assert和错误信息输出.使用标准库testing,

  • GoLang基础学习之go test测试

    目录 1.介绍 2.函数 3.测试函数格式 3.1格式 3.2失败示例 3.3成功示例1 3.4成功示例2 3.5成功示例3 3.6成功实例4 4.基准函数 4.1成功实例1 4.2成功实例2 4.3性能比较函数 总结 1.介绍 Go语言中的测试依赖go test命令.编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法.规则或工具: go test 命令是go语言内置的命令 go test命令是一个按照一定约定和组织的测试代码的驱动程序在我们执行了go tets命令之后,这个命令

  • golang基础之waitgroup用法以及使用要点

    目录 一.前言 二.waitgroup使用示例 三.waitgroup使用注意事项 四.waitgroup使用总结 附:陷阱避免 总结 一.前言 waitgroup在golang中,用于线程同步,指等待一个组,等待一个系列执行完成后,才会向下执行,可以解决一个 进程goroutine 等待多个该进程启动的子线程goroutine 都正常运行完成的场景,这个比较常见的场景就是例如 后端 main processer 启动了多个消费者worker干活,还有爬虫并发爬取数据,多线程下载等等,为了保证主

  • Linux shell脚本基础学习详细介绍(完整版)第1/2页

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Linux 脚本编写基础 ◆1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序.当编辑好脚本时,如果要执行该脚本,还必须使其可执行.要使脚本可执行:编译

  • Java基础学习之Swing事件监听

    一.初始代码架构 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Btn extends JFrame{ public static void main(String []args){ JFrame f = new JFrame("事件监听测试"); f.setBounds(0,0,300,400); f.addWindowListener(new WindowAdapter(

  • 零基础学习Python爬虫

    目录 爬虫 为什么我们要使用爬虫 爬虫准备工作 爬虫项目讲解 代码分析 1.爬取网页 2.逐一解析数据 3.保存数据 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做. 为什么我们要使用爬虫 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中. 过去,我们通过书籍.报

  • avaScript基础学习-基本的语法规则

    目录 一.运算符 二.分支语句 三.循环语句 四.异常的捕获与处理 五.js中的this关键字 六.let与const定义变量使用规则 七.js中的void链接 八.异步编程setTimeout 九.函数闭包 一.运算符 js中的+-*/运算与c语言较为相似,简写方式也类似 ++.--.+=.%=等运算规则也相同 在js中===代表绝对等于(值与类型都相同才算相同) !==(不绝对等于)值和类型有一个不相同或者都不相同为真 js中还支持三目运算符 a>b?'a大于b':'b大于a' 二.分支语句

  • Java基础学习之关键字和变量数据类型的那些事

    目录 一. 关键字 二. 变量 2.1 变量的定义 2.2 变量的分类 1. 按照数据类型分类 三. 字符编码 补充:变量的声明和初始化 总结 一. 关键字 Java中的关键字是由特定的单词组成,单词全为小写字母,每个都有特殊的含义,其实Java关键字也就那几十个,这个不需要背,以后都会知晓: 将以上关键字分类大概是这样的: tips: 值得注意的是goto,以前的时候还在用,现在作为Java的保留字,已经不用了,但是还是存在的,保留下来而已. Java中需要我们自定义的名字叫做标识符.比如方法

  • Java基础学习之构造方法详解

    目录 一.构造方法概述 二.构造方法的注意事项 三.标准类制作 一.构造方法概述 构造方法是一种特殊的方法 作用:创建对象Student stu = new Student(); 格式: pucli class 类名{        修饰符 类名(参数){        } } 功能:主要是完成对象数据的初始化 示例代码: class Student { private String name; private int age; //构造方法 public Student() { System.

  • Java基础学习之接口详解

    目录 概述 定义格式 含有抽象方法 含有默认方法和静态方法 含有私有方法和私有静态方法 基本的实现 实现的概述 抽象方法的使用 默认方法的使用 静态方法的使用 私有方法的使用 接口的多实现 抽象方法 默认方法 静态方法 优先级的问题 接口的多继承 其他成员特点 概述 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量.构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9). 接

  • 值得收藏的asp.net基础学习笔记

    值得收藏的asp.net基础学习笔记,分享给大家. 1.概论 浏览器-服务器 B/S 浏览的 浏览器和服务器之间的交互,形成上网B/S模式 对于HTML传到服务器  交给服务器软件(IIS)  服务器软件直接读取静态页面代码,然后返回浏览器 对于ASPX传达服务器  交给服务器软件(IIS)   IIS发现自己处理不了aspx的文件,就去映射表根据后缀名里找到响应的处理程序(isapi,服务器扩展程序) 问题:IIS如何调用可扩展程序? 答:可扩展程序首先就是按照IIS提供的借口实现代码,所以I

随机推荐