Golang 程序测试框架

2023-11-14

注意事项

  1. 测试用例文件名必须以_test.go结尾,如:person_test.go

  2. 测试用例函数必须以Test开头,比如person_test.go文件中的TestReStore

  3. 测试函数的形参必须是t *testing.T

  4. 一个测试用例文件中,可以有多个测试用例函数

  5. 如果要测试单个文件一定要带上被测试的源文件

    go test -v person_test.go cal.go

  6. 测试单个方法

    go test -v -test.run TestReStore

测试命令:进入到对应目录,输入go test -v

文件名:person.go

package model

import(
	//"fmt"
	"encoding/json"
	"io/ioutil"
)
/*首字母小写,引入后不能直接使用*/
type Person struct{
	Name string 
	Age int 
	Skill string
}

//序列化存储
func (this * Person)Store() bool {
	data,err := json.Marshal(this)
	if err != nil {
		return false
	}

	filePath := "F:/Go/src/gocode/project_01/b.txt"
	err = ioutil.WriteFile(filePath,data,0666)
	if err != nil {
		return false
	}

	return true

}

//读取反序列化内容
func (this * Person)ReStore()bool{
	filePath := "F:/Go/src/gocode/project_01/b.txt"
	data,err := ioutil.ReadFile(filePath)
	if err != nil {
		return false
	}

	err = json.Unmarshal(data,this)
	if err != nil {
		return false
	}

	return true
}

文件名:person_test.go

package model

import(
	"testing"
)

func TestStore(t *testing.T){
	person := &Person{
		Name:"ywh",
		Age:21,
		Skill:"music",
	}

	res := person.Store()
	if !res {
		t.Fatalf("model.Store() 错误,希望为=%v 实际为=%v",true,res)
	}

	t.Logf("model.Store() 测试成功")
}

func TestReStore(t * testing.T){
	var person = &Person{}
	res := person.ReStore()
	if !res {
		t.Fatalf("model.ReStore() 错误,希望为=%v 实际为=%v",true,res)
	}

	if person.Name != "ywh"{
		t.Fatalf("model.ReStore() 错误,希望为=%v 实际为=%v","ywh",person.Name)
	}

	t.Logf("model.ReStore() 测试成功")
}

输出:

=== RUN   TestStore
    person_test.go:19: model.Store() 测试成功
--- PASS: TestStore (0.00s)
=== RUN   TestReStore
    person_test.go:33: model.ReStore() 测试成功
--- PASS: TestReStore (0.00s)
PASS
ok      gocode/project_01/model 0.023s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang 程序测试框架 的相关文章

  • Go内存管理及性能观测工具

    内存管理 TCMalloc Golang内存分配算法主要源自Google的TCMalloc算法 TCMalloc将内存分成三层最外层Thread Cache 中间层Central Cache 最里层Page Heap Thread Cach
  • 七. go 常见数据结构实现原理之 反射

    目录 一 golang 是如何实现反射的 如何比较两个对象完全相等 一 golang 是如何实现反射的 参考博客Go 语言问题集 Go Questions Go 语言在 reflect 包里定义了各种类型 实现了反射的各种函数 通过它们可以
  • Go语言实现区块链与加密货币-Part3(交易优化,单机模拟多节点通信)

    交易 二 在这个系列文章的一开始 我们就提到了 区块链是一个分布式数据库 不过在之前的文章中 我们选择性地跳过了 分布式 这个部分 而是将注意力都放到了 数据库 部分 到目前为止 我们几乎已经实现了一个区块链数据库的所有元素 今天 我们将会
  • 带你使用Golang快速构建出命令行应用程序

    在日常开发中 大家对命令行工具 CLI 想必特别熟悉了 如果说你不知道命令工具 那你可能是个假开发 每天都会使用大量的命令行工具 例如最常用的Git Go Docker等 不管是做技术开发还是业务开发 都会有开发命令行程序的场景 例如如果是
  • 权重实现随机抽奖

    一般抽奖是怎么实现的 在实习期间学会了一种通用的写法 在这里记录一下 最近在学Golang语法基础 这里就用Golang来写 package main import fmt time math rand func main r rand N
  • golang:环境变量GOPROXY和GO111MODULE设置

    我们安装完golang后 我们在windows的cmd命令下就可以直接查看和使用go命令和环境变量了 同样的在linux下可以在控制台使用 如下图所示 C Users lijie1 gt go env set GO111MODULE set
  • beego+goAdmin+mysql+docker+natapp作为微信小程序地服务器“伪部署”

    写在前面的话 1 为什么我要叫伪部署 答 因为我把它们放在服务器运行 都是开发模式 生产模式实在不会弄 所以就这样了 2 系统环境 答 腾讯云服务器 系统为 ubuntu 版本不记得 应该是比较高的 3 前提假设 答 假设你的服务器已经安装
  • goland环境配置

    goland modules环境配置 下载和安装goland 环境配置 配置环境变量GOPATH 配置go modules GOPROXY代理的系统变量 工程目录中新建三个工作目录 goland中启用go modules 新建一个go程序
  • Golang 内存对齐视频

    https www bilibili com video BV1Ja4y1i7AF 简而言之 就是注意写代码的时候要把相同类型的元素放在一起 更进一步需要自己将结构体配对为32位或64位的整数倍 有助于减少额外空间消耗
  • Go 语言注释教程

    注释是在执行时被忽略的文本 注释可用于解释代码 使其更易读 注释还可用于在测试替代代码时防止代码执行 Go支持单行或多行注释 Go单行注释 单行注释以两个正斜杠 开头 在 和行尾之间的任何文本都将被编译器忽略 不会被执行 示例 This i
  • 为什么最近听说 Go 岗位很少很难?

    大家好 我是煎鱼 其实这个话题已经躺在我的 TODO 里很久了 近来很多社区的小伙伴都私下来交流 也有在朋友圈看到朋友吐槽 Go 上海的大会没什么人 还不如 Rust 大会 比较尴尬 今天主要是看看为什么 Go 岗位看起来近来很难的样子 也
  • 深入理解 Go 语言中的接口(interface)

    一 GoLang 接口的定义 1 GoLang 中的接口 在 Go 语言中接口 interface 是一种类型 一种抽象的类型 接口 interface 定义了一个对象的行为规范 只定义规范不实现 由具体的对象来实现规范的细节 实现接口的条
  • 掌握 Go 语言中的循环结构:从基础到高级

    一 if else 分支结构 1 if 条件判断基本写法 package main import fmt func main score 65 if score gt 90 fmt Println A else if score gt 75
  • 48.Go简要实现令牌桶限流与熔断器并集成到Gin框架中

    文章目录 一 简介 二 限流器与熔断器在微服务中的作用 1 限流器 对某个接口单位时间内的访问量做限制 2 熔断器 当服务连续报错 超过一定阈值时 打开熔断器使得服务不可用 三 具体实现 1 限流器实现逻辑 以令牌桶算法为例 2 限流器集成
  • go-zero开发入门之网关往rpc服务传递数据2

    go zero 的网关服务实际是个 go zero 的 API 服务 也就是一个 http 服务 或者说 rest 服务 http 转 grpc 使用了开源的 grpcurl 库 当网关需要往 rpc 服务传递额外的数据 比如鉴权数据的时候
  • go-zero开发入门-API服务开发示例

    接口定义 定义 API 接口文件 接口文件 add api 的内容如下 syntax v1 info title API 接口文件示例 desc 演示如何编写 API 接口文件 author 一见 date 2023年12月07日 vers
  • go-zero开发入门-API网关鉴权开发示例

    本文是 go zero开发入门 API网关开发示例 一文的延伸 继续之前请先阅读此文 在项目根目录下创建子目录 middleware 在此目录下创建文件 auth go 内容如下 鉴权中间件 package middleware impor
  • go语言实现文件夹上传前后端代码案例

    go语言实现文件夹上传前后端代码案例 前端用于上传的测试界面 如果上传的文件夹有子文件要遍历子文件夹创建出子文件夹再进行拷贝 需要获取文件名和对应的路径 将文件的相对路径和文件对象添加到FormData中 这几行代码很关键 for let
  • Golang拼接字符串性能对比

    g o l a n g golang g o l an g
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github

随机推荐

  • NIO与IO的区别

    NIO与IO的区别 IO是面向流的 而NIO是面向缓冲区的 NIO会把数据读取到一个稍后处理的缓冲区中 需要时可以在缓冲区前后移动 这就增加了处理过程中的灵活性 IO流是阻塞式的 当一个线程在执行read 或write 方法时 线程转为阻塞
  • 关于 Collection 用于 .xml 文件的使用及说明

    一 关于Collection 在 xml中设置 让一对多数据返回成 list 集合形式 首先看使用方式 注 collection 中的 property 类型必须是 SysUser创建对应的哦 Mybatis 会自动将非 SysUser对象
  • HCIA-Big Data华为认证大数据工程师在线课程笔记

    文章目录 一 简介 二 HDFS分布式文件系统 三 MapReduce分布式离线批处理和Yarn资源协调 四 Spark2 x基于内存的分布式计算 五 HBase分布式NoSQL数据库 HBase架构 关键流程和特性 FusionInsig
  • Linxu (Redhat/Centos)开机省略输入用户名、密码直接进GUI

    1 编辑 etc gdm custom conf为如下 GDM configuration storage daemon AutomaticLoginEnable true AutomaticLogin root TimedLoginEna
  • linux kernel5.* kworker+进程cpu持续高占用

    最近平台linux操作系统内核升级至5 版本后出现kworker 进程高占用 内核降至4 时没有问题 通过搜索相关资料规避方案如下 内核启动参数加入 usbcore autosuspend 1 禁用usb设备自动挂起 具体步骤 1 编辑 e
  • ESP32开发板手动更换外置的flash

    ESP32开发板手动更换外置的flash 实物板 风险提示 操作有风险 需谨慎 新手请勿模仿 第一步拿下屏蔽罩 用热风枪 360 吹下来的 第二步 更换flash芯片 ESP32 D0WDQ6芯片下方那个就是flash芯片了型号 25VQ3
  • Docker基本概念

    一 为什么使用容器 1 上线流程繁琐 开发 gt 测试 gt 申请资源 gt 审批 gt 部署 gt 测试等环节 2 资源利用率低 普遍服务器利用率低 造成过多浪费 3 扩容 缩容不及时 业务高峰期扩容流程繁琐 上线不及时 4 服务器环境臃
  • SpringBoot 集成fastJson

    第一步 添加fastjson 依赖
  • Flutter跨平台移动端开发丨封装网络请求框架 dio

    dio 框架介绍 A powerful Http client for Dart which supports Interceptors Global configuration FormData Request Cancellation
  • Windows下Anaconda及Python指令

    日常记录 一 CUDA 1 已安装CUDA版本查看 nvcc version or nvcc V 二 Anaconda 1 查看安装的所有环境 conda env list or conda info env 2 查看该环境下有那些库 co
  • 零基础学Python

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • Faster-RCNN算法详解

    Faster CNN结构图 以下是Faster RCNN的结构图 上图中的目标检测包含了包括region proposal 生成ROI feature extraction 特征提取网络 classification ROI分类 regre
  • 有C++基础如何直接上手QT?

    文章目录 一 QT的发展 二 支持平台 三 QT的版本 四 QT的安装与下载 五 QT的优点 六 创建Qt项目 6 2 手动创建 6 3 pro 文件 七 一个简单的Qt应用程序 一 QT的发展 1991年 Qt最早由奇趣科技开发 1996
  • h5第三方登录—微信登录

    第一步 用户同意授权 获取code 第二步 通过code换取网页授权access token 第三步 刷新access token 如果需要 第四步 拉取用户信息 需scope为 snsapi userinfo 检验授权凭证 access
  • 论文阅读_变分自编码器_VAE

    英文名称 Auto Encoding Variational Bayes 中文名称 自编码变分贝叶斯 论文地址 http arxiv org abs 1312 6114 时间 2013 作者 Diederik P Kingma 阿姆斯特丹大
  • 硬盘故障时如何强制关机:Input/output error

    如果硬盘可能会出现锁死或坏道的故障 会造成SHELL命令的失效 包括 reboot powoff shutdown 用正常的命令是没法完成重启的 执行这些命令 会出现如下IO报错 reboot bash sbin reboot Input
  • 【微信小程序-0基础入门】项目发布完整流程

    写在前面 上一节讲述了小程序的相关介绍以及账号注册 这一节讲述小程序发布的具体流程 目录 安装开发者工具 小程序项目发布流程 小程序代码的构成 项目结构 1 了解项目的基本组成结构 2 小程序页面的组成部分 小程序代码的构成 JSON 配置
  • Unity游戏开发之游戏动画(模型动画制作及导入)

    一 简单制作3D角色 在stream中下载Fuse软件 在Fuse中制作人物 导出模型为OBJ格式 注意 这里导出目录必须为英文路径 否则只能导出空的OBJ文件 压缩Obj文件为zip格式 打开Mixamo网站 https www mixa
  • 以“信”数智,筑“广”生态:亚信科技CEO高念书受邀出席中国广电数字化赋能大会

    6月30日 由国家广播电视总局指导 中国广电集团主办的中国广电数字化赋能大会在京召开 国家广播电视总局党组成员 副局长杨小伟 工信部总工程师赵志国 中国移动党组成员 副总经理高同庆等出席会议并致辞 中广电移动网络有限公司董事长宋起柱作主题报
  • Golang 程序测试框架

    注意事项 测试用例文件名必须以 test go结尾 如 person test go 测试用例函数必须以Test开头 比如person test go文件中的TestReStore 测试函数的形参必须是t testing T 一个测试用例文