go语言测试框架Convey+Monkey的使用
go语言有很多的测试框架,但是个人感觉还是Convey+Monkey的使用比较简单方便,Convey作为外部框架,monkey可以为函数和方法进行打桩。
一个简单的示例来说明如何对函数进行打桩
示例:
func Readfile(filename string, m interface{}) error{_,err := ioutil.ReadFile(filename)if err != nil {fmt.Println("readfile:[%s] error:[%s]", filename, err.Error())return err}return nil
}
Readfile函数中调用了ioutil.ReadFile,假设要对该函数写UT测试用例的话,不可避免就要对其进行打桩,因为系统不存在要读取的filename文件,自然读取不到数据。
func TestReadfile(t *testing.T){Convey("Teststring2json",t, func() {filename := ""m := []interface{}{}pathes := applyfunc(ioutil.ReadFile, func(_ string) ([]byte, error) {return []byte{},nil})defer pathes.Reset()err := Readfile(filename , m)So(err,shouldBeNil)})
}
因为filename不存在,不可避免的ioutil.ReadFile(filename)返回的err != nil,那么return 的必然是err的错误信息,打桩之后,给他返回来的就是nil,那么执行的就是return nil
其实,打桩的目的就是不关注需要打桩函数的具体执行调用过程,将全部的精力放在自己当前所写的函数之上。
go语言测试框架Convey+Monkey的使用相关推荐
- go测试框架Convey + Monkey的使用
前言 常用的go语言测试框架包括Convey.Stub.Mock.Monkey等,用过之后发现比较好用的是Convey+Monkey,Convey是作为外层框架,Monkey可以为函数.方法等打桩,这 ...
- c语言测试框架设计,C语言单元测试框架Check
什么是Check Check是C语言的一个单元测试框架.它提供一个小巧的单元测试接口.测试案例运行在各自独立的地址空间,所以断言失败和代码错误造成的段错误或者其他的信号可以被捕捉到.另外,测试的结果显 ...
- c语言语法sc,适合于嵌入式系统的C语言单元测试框架:SCUNIT
说明 主流语言都有测试框架,在嵌入式领域特别是资源紧缺的单片机工程中没有合适的测试框架.本文发布一种简单的C语言测试框架SCUNIT,可以应用于嵌入式领域. 测试环境 本框架是基于标准C语言编写,对平 ...
- Sixpack —— 支持多语言的 A/B 测试框架
Sixpack 是一个语言无关的 A/B 测试框架.支持多种编程语言,提供简单的 API 给客户端调用,可使用不同的编程语言来开发客户端.Sixpack 包含两部分:Sixpack-server 用来 ...
- c语言的自动测试工具,C语言单元测试框架--check工具
C语言单元测试框架--check工具 虽然在UNIX上用C语言做开发已经有一段时间了,但是我不得不承认,自己单元测试做的并不好.恰好最近有新的开发任务,就学习了一些关于测试驱动开发的知识,准备改进自己 ...
- golang测试框架--smartystreets/goconvey
视频教程和配套博客:goconvey - 课时 1:优雅的单元测试 Go 语言虽然自带单元测试功能,在 GoConvey 诞生之前也出现了许多第三方辅助库.但没有一个辅助库能够像 GoConvey 这 ...
- android测试框架对比(二)
1. Appium测试 (功能测试,用户接受度测试,黑盒测试) Website: http://appium.io/ Appium测试相当于黑盒测试.只是测试UI逻辑正确性.所以Appium测试框架提 ...
- 5个最佳的Android测试框架
2019独角兽企业重金招聘Python工程师标准>>> 谷歌的Android生态系统正在不断地迅速扩张.有证据表明,新的移动OEM正在攻陷世界的每一个角落,不同的屏幕尺寸.ROM / ...
- 自动化测试框架cucumber_BDD测试框架之Cucumber使用入门
▼ 关注测试局| 会上瘾 1什么是Cucumber cucumber早在ruby环境下应用广泛,作为BDD框架的先驱,cucumber后来被移植到了多平台,简单来说cucumber是一个测试框架,就像 ...
最新文章
- C++ RCSP智能指针简单实现与应用
- Java程序流程控制(顺序结构、分支结构、循环结构、if-else、switch-case、for、while、do-while、break、continue、return)
- 转图像偏微分方程不适定问题
- 网站图片做SEO优化的技巧有哪些?
- 利用图基Tukey method检测数据集中的异常值
- Java多线程(九)之ReentrantLock与Condition
- 这所高校的快递被机器人承包了,别人家的学校!
- linux 权限 mask,【自学Linux】Linux用户、组、权限(一)
- 使用 postman 进行接口测试
- 不用IIS跑.net web应用
- WebGIS开发之用openlayers加载离线百度地图
- R语言:作业二(矩阵:求行列式、逆矩阵、特征值、特征向量)【补充:矩阵相关运算知识】
- 需要点智商才能看懂的恐怖故事,你能看懂多少个?
- 深圳南山学区房_查查吧学区房地图
- 数据可视化---将某个股票每天收盘价通过matplotlib生成折线图
- 往hive表中插入与导出数据方式load ,insert ,sqoop 等方式详解
- python 斗地主发牌_tkinter模拟斗地主发牌
- docker镜像迁移mysql启动报错_README.md
- jar启动指定JDK/JRE 安装路径教程
- Why we need activation function?
热门文章
- matlab可以打开wmv格式吗,wmv是什么格式的文件 wmv文件怎么打开?
- 北大青鸟:成功的应聘者
- 《Flocking for Multi-Agent Dynamic Systems:Algorithms and Theory》仿真展示
- ClickHouse 异常问题记录
- SQL Server中clustered与nonclustered的区别
- MMORPG游戏AOI流程
- 【Spring Cloud】EnableFeignClients后报错:Ambiguous mapping. Cannot map XXX method YYY
- 漏洞扫描之OpenVas
- 考研数学二真题1987年-2022年所有历年真题及详解(高清无水印)
- 欧姆龙cp1h-xa40dt-d与台达变频器modbus rtu通讯程序