go语言如何书写测试模块(代码片段)

author author     2022-12-12     121

关键词:

如何在go语言中使用原生的testing模块书写测试模块

1.首先对于test模块如何去命名

    按照官方的规定在书写test包的时候,应该以源文件名加上_test.go的结尾来书写测试包。如原文件名为`main.go`则测试包按照规定应该写为`main_test.go`。当然假如你的这两个文件在同一个文件夹内是没有问题的,而且只要保证是_test结尾即可。

2.测试包的举例

源文件 main.go

package main

import "fmt"

func gotest(num int) 
    total := 0
    for n := 0; n < num; n ++ 
        total += n
        fmt.Println(total)
    

func main() 
    gotest(100)

测试文件 main_test.go

package main

import (
    "testing"

)

func TestYou(t *testing.T)   // 注意这里的TestYou必须采用驼峰命名法
    gotest(100)

3. 最后在终端执行 go test 即可,也可以明确指明文件 go test main.go main_test.go 或者 test go -v

4.如何有顺序的测试包中的代码呢?

对于test包中的代码执行是没有什么顺序可言的,但是若想让代码测试有顺序,比如在做web开发的时候,你应该先连接数据库等操作。所以这个时候就用到了t.run()这个函数了。

主函数 main.go

package main

import "fmt"

func gotest(num int) 
    total := 0
    for n := 0; n < num; n ++ 
        total += n
    
    fmt.Println(total)

func main() 
    gotest(100)

测试函数 main_test.go

package main

import (
    "testing"

)

func testYou1(t *testing.T) 
    gotest(100)


func testYou2(t *testing.T) 
    gotest(100)

func TestAll(t *testing.T) 
    t.Run("testYou1", testYou1)
    t.Run("testYou2", testYou2)
此外TestMain()函数会最先执行

Benchmark压力测试

4go语言单元测试性能测试与监控(代码片段)

4、Go语言单元测试、性能测试与监控1、单元测试1.1单元测试简介1.2testing的使用1.3案例1.4测试中一些函数的区别2、代码覆盖率3、断言库4、BDD测试框架5、基准测试5.1基准测试简介5.2基准测试案例6、性能监控7、常见的调优参数1、... 查看详情

云原生训练营模块一go语言特性(代码片段)

Go语言特性如何学习云原生技术?构建高可用微服务架构统一思想Go语言Go语言特点Go语言编译环境控制结构数据结构生产者与消费者代码如何学习云原生技术?代码驱动掌握Go语言编程能力从点到面学习容器技术cgroup,... 查看详情

云原生训练营模块一1.1go语言特性(代码片段)

Go语言特性如何学习云原生技术?构建高可用微服务架构统一思想Go语言Go语言特点Go语言编译环境控制结构数据结构如何学习云原生技术?代码驱动掌握Go语言编程能力从点到面学习容器技术cgroup,namespace网络协议栈... 查看详情

go语言之go语言异常处理与测试(代码片段)

Go语言异常处理与测试Go语言异常处理Go语言没有结构化异常,使用panic抛出错误,recover捕获错误。异常的使用场景简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。panic:1、内置函... 查看详情

go项目的测试代码3(测试替身testdouble)(代码片段)

...等…)开发环境里无法调用相应的模块。这时候我们应该如何去写测试代码?因此测试替身TestDouble出现了。其功能和名字一样,做替身。测试替身TestDouble的分以下类型。 查看详情

go语言学习笔记—基础—go工具(5.1):单元测试——测试和验证代码的框架(代码片段)

...元进行检查和验证。对于单元测试中单元的含义,如C语言中指一个函数,Java中指一个类,图形化软件中指一个窗口或菜单等。总的来说,单元是认为规定的最小可测试功能模块,单元测试是在软件开发过程中... 查看详情

go语言测试(代码片段)

Go语言的测试技术是相对低级的。它依赖一个gotest测试命令和一组按照约定方式编写的测试函数,测试命令可以运行这些测试函数。编写相对轻量级的纯测试代码是有效的,而且它很容易延伸到基准测试和示例文档。gotest编写测... 查看详情

dotest--用例该如何书写?完整示例-软件测试(代码片段)

...黑盒、自动化、接口、性能亦或是安全测试工程师。至于如何书写先不讲,先看下我们学员共同完成的一个完整版的用例示例图:QQ登录界面 查看详情

7.go语言—时间模块(代码片段)

一、时间模块1.统计程序执行时间packagemainimport("time""fmt")functest()time.Sleep(time.Millisecond*100)funcmain()start:=time.Now().UnixNano()test()end:=time.Now().UnixNano()fmt.Printf("co 查看详情

go单元测试模块化(http请求)(代码片段)

http协议的mock可以使用 https://github.com/h2non/gock包示例: 1packagehellogock23import(4"bytes"5"io/ioutil"6"net/http"7"testing"89"github.com/nbio/st"10"gopkg.in/h2non/gock.v1"11)1213funcTestMockCheckp 查看详情

go语言开发go语言常用标准库一(代码片段)

Go语言开发(十一)、Go语言常用标准库一一、log1、log模块简介Go语言中log模块用于在程序中输出日志。log模块提供了三类日志输出接口,Print、Fatal和Panic。Print是普通输出;Fatal是在执行完Print后,执行os.Exit(1);Panic是在执行完Pr... 查看详情

云原生训练营模块二go语言进阶(代码片段)

这里写目录标题函数Main函数init函数传递变长参数内置函数回调函数闭包接口反射机制常用语法错误处理deferPanic和recover多线程channel-多线程通信通道缓冲遍历通道缓冲区关闭通道Select定时器Timer上下文Context如何停止一个子协程线... 查看详情

史上最全的go语言模块(module)管理详解(基于go1.19)(代码片段)

...置全局模块名4.在VSCode中使用工作区模式管理Go模块   go语言一直到1.10,都是使用GOPATH设置模块搜索路径,但从1.11开始,引入了新的Go模块管理机制(gomodules),不过一直到1.15,默认的 查看详情

史上最全的go语言模块(module)管理详解(基于go1.19)(代码片段)

...置全局模块名4.在VSCode中使用工作区模式管理Go模块   go语言一直到1.10,都是使用GOPATH设置模块搜索路径,但从1.11开始,引入了新的Go模块管理机制(gomodules),不过一直到1.15,默认的 查看详情

go语言(二十一)常见的模块使用(代码片段)

模块使用执行系统shell命令使用os/exec模块packagemainimport("fmt""os/exec")funcmain()var(cmd*exec.Cmderrerror)cmd=exec.Command("/bin/bash","-c","echohello")err=cmd.Run()iferr!=nilfmt.Println(err)fmt.Println(err)获 查看详情

如何从dep迁移到go模块(代码片段)

我目前正在使用Dep,并希望开始使用Go模块。我如何迁移?答案从Dep迁移到Go模块非常简单。运行goversion并确保您使用的是版本11或更高版本。将您的代码移到GOPATH之外或设置exportGO111MODULE=on。gomodinit[modulepath]:这将从Gopkg.lock导入... 查看详情

go语言基础入门(代码片段)

...与使用多模块工作区总结前言Go是由谷歌支持的开源编程语言,属于编译型语言,对并发编程有较好的支持。官网页面:https://go.dev/或者https://golang.google.cn/主要适合 查看详情

go语言如何读取excel测试数据,简单易学(代码片段)

...;不管你使用什么样的工具,不管你使用什么样的编程语言,都可以通过读取通用格式的数据来进行自动化测试。在自动化测试中,人们常用的编程语言是Python和Java,但是随着golang的普及,也有越来越多的技术团队... 查看详情