引用

import "testing"

一些原则

  • 文件名必须是 _test.go 结尾的,这样在执行 go test 的时候才会执行到相应的代码
  • 必须 import testing 这个包
  • 所有的测试用例函数必须是 Test 开头
  • 测试用例会按照源代码中写的顺序依次执行
  • 测试函数 TestXxx() 的参数是 testing.T ,我们可以使用该类型来记录错误或者是测试状态
  • 测试格式: func TestXxx (t *testing.T) , Xxx 部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如 Testintdiv 是错误的函数名
  • 函数中通过调用 testing.TError, Errorf, FailNow, Fatal, FatalIf 方法,说明测试不通过,调用 Log 方法用来记录测试的信息。

另外说明一点,测试函数 func TestXxxx(t *testing.T) 中,除了Xxxx可以不一样外,别的格式都不能改

test 测试用例

比如此处,我们的测试文件 demo_test.go 格式如下:

func Test_Division_1(t *testing.T) {
if i, e := Division(6, 2); i!=3 || e!=nil { //try a unit test on function
t.Error("Devision error") // 如果不是如预期的那么就报错
} else {
t.Log("Pass test1") //记录一些你期望记录的信息
}
} func Test_Division_2(t *testing.T) {
t.Error("NO ONE CAN PASS")
}

上述的 func Division(float64, float64) (float, error) 函数在 demo.go 文件中如下:

func Division(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("除数不能为0")
}
return a / b, nil
}

test 的运行

此时,执行命令,默认运行所有文件

go test

此时我们即可看到结果:

--- FAIL: Test_Division_2 (0.00s)
demo_test.go:16: 就是不通过
FAIL
exit status 1
FAIL _/dir/??? 0.001s

另外可以使用其他命令,查看能加详细的结果:

go test ???_test.go // 执行指定脚本

go test -v ???_test.go ???.go // 查看详细结果

go test -v -run="Test_Division_2" // 正则匹配函数名称,执行对应的函数

go test -c // 生成test的2进制可执行文件

go test -i // 安装/重新安装运行测试所需的依赖包,但不编译和运行测试代码

go test -o aaa.test// 运行可执行文件

压力测试

作用主要为检测函数(方法)的性能

  • 压力测试用例必须遵循如下格式,其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母,例如 func BenchmarkXxx(b *testing.B) { ... }

  • go test 不会默认执行压力测试的函数,如果要执行压力测试需要带上参数 -test.bench ,语法: -test.bench="test_name_regex" ,例如 go test -test.bench=".*" 表示测试全部的压力测试函数

  • 在压力测试用例中,请记得在循环体内使用testing.B.N,以使测试可以正常的运行

  • 文件名也必须以_test.go结尾

以下为一个名为 webbench_test.go 的Demo:

package gotest

import (
"testing"
) func Benchmark_Division(b *testing.B) {
for i := 0; i < b.N; i++ { //use b.N for looping
Division(4, 5)
}
} func Benchmark_TimeConsumingFunction(b *testing.B) {
b.StopTimer() //调用该函数停止压力测试的时间计数 //此处做一些不会影响测试函数本身的性能的工作 b.StartTimer() //重新开始时间
for i := 0; i < b.N; i++ {
Division(4, 5)
}
}

执行命令:

go test webbench_test.go -test.bench=".*"

可以得到如下的结果:

goos: linux
goarch: amd64
Benchmark_Division-4 2000000000 0.56 ns/op
Benchmark_TimeConsumingFunction-4 2000000000 0.47 ns/op
PASS
ok command-line-arguments 2.153s

参见

一个不错的教程

go Test的实现 以及 压力测试的更多相关文章

  1. 使用SwingBench 对Oracle RAC DB性能 压力测试

    我们可以使用swingbench这个工具对数据库性能进行压力测试,得到一些性能指标作为参考. SwingBench下载: http://www.dominicgiles.com/downloads.h ...

  2. linux压力测试工具stress

    最近给PASS平台添加autoscaling的功能,根据服务器的负载情况autoscaling,为了测试这项功能用到了stress这个压力测试工具,这个工具相当好用了.具体安装方式就不说了.记录下这个 ...

  3. JMeter压力测试

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...

  4. kafka性能参数和压力测试揭秘

    转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容 ...

  5. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...

  6. Jmeter教程 简单的压力测试

    Jmeter教程 简单的压力测试:http://www.cnblogs.com/TankXiao/p/4059378.html

  7. HTTP压力测试工具

    HttpTest4Net是一款基于C#实现的和HTTP压力测试工具,通过工具可以简单地对HTTP服务进行一个压力测试.虽然VS.NET也集成了压力测试项目,但由于VS自身占用的资源导致了在配置不高的P ...

  8. 微软压力测试工具 web application stress

    转自 http://www.cnblogs.com/tonykan/p/3514749.html lbimba  铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网 ...

  9. 使用Microsoft Web Application Stress Tool对web进行压力测试

    Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法.Web 压力测试通常是利用一些工具,例如微软 ...

  10. 如何正确的做WEB端的压力测试

    1.对要测试的系统进行分析,明确需要对哪一块做压力测试.比如:淘宝网站双十一期间,秒杀跟支付,此模式用户操作中占比比较大 再比如:游戏,登录--开始战斗--结束战斗这种混合模式在用户操作中占比较大 那 ...

随机推荐

  1. Android 图片加载框架 Glide4.x

    概述 Glide是一个图片加载框架,使得我们可以轻松的加载和展示图片 Glide4.x新增apply()来进行设置,apply可以调用多次,但是如果两次apply存在冲突的设置,会以最后一次为准 新增 ...

  2. 爬虫基础--IO多路复用单线程异步非阻塞

    最近一直的学习爬虫  ,进行基础的学习 性能相关 参考 https://www.cnblogs.com/wupeiqi/p/6229292.html # 目标:单线程实现并发HTTP请求 # # so ...

  3. 什么是TLB?

    TLB:Translation Lookaside Buffer. 根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲.里面存放的是一些页表文件(虚拟地址到物理地址的转换表). ...

  4. python3 文件操作

    步骤:打开文件->操作文件->关闭文件 打开文件 文件句柄 = open('文件路径', '模式') 指定文件编码 文件句柄= open('文件路径','模式',encoding='utf ...

  5. Linux 下必备的性能检测工具 合集

    有些工具,值得学习学习: 网络 iftop IO  iotop 系统  top htop 保持更新,转载请注明出处. https://www.cnblogs.com/xuyaowen/p/linux- ...

  6. python--继承--方法的重写---和父类的扩展

    1.方法的重写 父类的方法不能满足子类的需要,可以对方法重写 具体的实现方式,就相当于在子类中定义了一个和父类同名的方法并实现 重写之后只会对子类的方法调用,而不会调用父类封装的方法 2.对父类方法进 ...

  7. python正则表达式相关记录

    1 python中字符串前加‘r’,即可阻止‘\’导致的字符转义.但是在re.sub()中参数中加'r'不会起作用.

  8. js字符串String提取方法比较

    JavaScript: Slice, Substring, or Substr的选择! 在JavaScript中,字符串主要通过以下String方法之一提取: // slice // syntax: ...

  9. Python基础之迭代器和生成器

    阅读目录 楔子 python中的for循环 可迭代协议 迭代器协议 为什么要有for循环 初识生成器 生成器函数 列表推导式和生成器表达式 本章小结 生成器相关的面试题 返回顶部 楔子 假如我现在有一 ...

  10. Configuring High Availability and Consistency for Apache Kafka

    To achieve high availability and consistency targets, adjust the following parameters to meet your r ...