前言:
平时根据需求写代码.人工进行测试往往不会面面俱到,还会因为需求的改变繁琐的进行测试
通过完成一个测试函数,可语文知识以大大简化测试的步骤,并且在需求该变的时候只需要改变一下测试的输入与期望
benchmark
主要测试函数的性能示例函数 函数的前缀名为 example
为文档提示示例文档①测试函数
函数的基本测试函数的组测试函数的子测试测试函数覆盖率(也就是被测试函数有多少代码用于了执行)在进行测试的时候,要保证被测函数覆盖率为100%,测试函数覆盖率为60%以上,否则写的代码大部分用不到,需要优化①测试覆盖率可以使用go test -cover
②go test -cover -coverprofile=c.out
(将测试的结果存入文件c.out)然后使用go tool cover -html=c.out
可以打开文件,显示哪些代码没有执行②基准测试
基准函数测试是做什么的:基准函数会自定义一个时间段用于执行代码,如果代码简洁,被测函数的执行次数需要成倍增加(直到达到基准测试函数给的预期,然后统计一共执行了多少轮,,每轮平均用时多少)执行基准函数时,首先要写基准函数基准测试函数的参数是:*testing.b对应的指针变量在测试函数内部要进行循环,循环的终止条件是b.n(1)基准测试函数需要注意的点
进行基准测试时往往是对函数的算法进行测验,有时后一个算法在测试数据的基量不同时测试出的效果会不同我们需要对不同数量级的样本进行测试的时候。可以自己写一个盒子作为跳板,测试什么数量级的数据就只进行当前数量级的测试
测试的时候命令为:go test -bench=.(将所有的跳板函数均执行一遍)或者=特定函数进行特定函数测中专可以升本科吗试-benchtime=time(在被测试函数在基准函数默认的时间内执行不完时可以拿这个参数进行时间的扩充)在进行基准函数测试的时候,可能需要进行一些前置工作,如果感觉前置工作浪费时间可以使用b.rettimer()对计时器进行重置
(2)基准测试代码
测试函数代码如下:
奔的组词被测函数代码如下:
将以上两个文件放在同一目录下,执行测试命令 go test
得到测试结果:
goos: windows
goarch: amd64
cpu: intel(r) core(tm) i5-8265u cpu @ 1.60ghz
benchmarksubstr-8 1213681 1012 ns/op 352 b/op 14 allocs/op
pass
ok _/d_/go语言学习笔记/go语言语法部分/go语言进阶语法/8.单元测试/基准测试 2.410s
测试函数如下:
待测函数如下:
(1).组测试结果分析及命令:
组测试命令仍使用go test
— fail: testsubstr (0.00s)
— fail: testsubstr/ca_1 (0.00s)
substr_test.go:46: want:[]string{“123”, “eqwe”, “123”} got:[]string{“13”, “eqwe”, “123”}
— fail: testsubstr/ca_2 (0.00s)
substr_test.go:46: want:[]string{“1”, “eqwe”, “1@23”} got:[]string{“eqwe”, “1@23”}
— fail: testsubstr/ca_3 (0.00s)
substr_test.go:46: want:[]string{“12@3”, “@eq@we”, “1@23”} got:[]string{“2@3”, “@eq@we”, “1@23”}
— fail: testsubstr/ca_5 (0.00s)
substr_test.go:46: want:[]string{“1”, “3:eqwe:1”, “3”} got:[]string{“3:eqwe:1”, “3”}
fail
exit status 1
fail _/d_/go语言学习笔记/go语言语法部分/go语言进阶语法/8.单元测试/组测试与子测试 0.155s
(2).子测试结果分析及命令:
例如单独测试ca_1,使用的命令为go test -v -run=testsubstr/ca_1
(等号后面跟的是上面组测试失败案例fail后面的目录)环保材料制作灯笼=== run testsubstr
=== run testsubstr/ca_1
substr_test.go:46: want:[]string{“123”, “eqwe”, &描写日落的优美段落#8220;123”} got:[]string{“13”, “eqwe”, “123”}
— fail: testsubstr (0.00s)
— fail: testsubstr/ca_1 (0.00s)
fail
exit status 1
fail _/d_/go语言学习笔记/go语言语法部分/go语言进阶语法/8.单元测试/组测试与子测试 0.186s
(2)flag.args
相对于os.args来说,flag.args使用起来更加方便pprof
调试工具进行调试,主要看待测模块在内存于时间上的效益调试的时候只会显示耗费时间空间较多的代码段.
生成调试代码块的文件:go run xx.exe -cpu....
使用go语言工具查看代码块所存在的问题:go tool pprof cpu.pprof
总结:
这里对常用的测试函数,子测试进行了详细的讲解,对于pprof参数调优仅仅做了个介绍,可以根据自己的兴趣在网上找一部分pprof的例子深入学习,进行自动化测试非常方便。
到此这篇关于go语言单元测试超详细解析的文章就介绍到这了,更多相关go语言单元测试内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 22:08:18,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4ba5358d7b2c2aae171a08c024600dce.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Go语言单元测试超详细解析.doc
本文 PDF 下载地址:Go语言单元测试超详细解析.pdf
留言与评论(共有 0 条评论) |