徐州模板开发建站,wordpress 云主机 ssl,淮安专业网站建设,网页设计实训报告工作内容和步骤简介 mock翻译过来是‘模拟’的意思#xff0c;也就是模拟接口返回的信息#xff0c;用已有的信息替换接口返回的信息#xff0c;从而提供仿真环境#xff0c;实现模拟数据下的功能测试#xff1b;
在多人合作编码时#xff0c;你写的一个函数func DoSth(People)用到了别…简介 mock翻译过来是‘模拟’的意思也就是模拟接口返回的信息用已有的信息替换接口返回的信息从而提供仿真环境实现模拟数据下的功能测试
在多人合作编码时你写的一个函数func DoSth(People)用到了别人写的People接口。此时你的函数已经写好了但是实现People接口的程序员还在磨蹭而这时你想要测试func DoSth()是否正确运行就需要gomock接口模拟技术。 导包 安装gomock包以及mockgen(mock代码生成器) 1 2 go get -u github.com/golang/mock/gomock go install github.com/golang/mock/mockgen 使用步骤
1.构造代码
type People interface {GetName() stringGetAge() int}func GetPeopleInfo(people People) {//调用接口println(name:, people.GetName(), age:, people.GetAge())}示例构造了一个函数GetPeopleInfo(People)调用了People接口。 2.使用mockgen生成mock代码
mockgen主要有两种使用方式
1.通过source构建从源文件生成 mock 接口通过 -source 启用 1 mockgen -sourcefoo.go [other options]
2.通过reflect构建通过使用反射程序来生成 mock 接口。它通过传递两个非标志参数来启用导入路径和逗号分隔的接口列表 1 mockgen database/sql/driver Conn,Driver
具体参数可以在命令行输入mockgen进行查看。
本文中使用2进行mock代码的构建
代码结构
Test├── gomock2└── db.go
使用的mockgen命令 1 mockgen -destination db_mock.go -package gomock2 Test/gomock2 People -destination db_mock.go表明生成的mock代码存放在db_mock.go -package gomock2生成代码所属包名为gomock2 Test/gomock2 People 对Test/gomock2下的People接口进行模拟 成功后会生成db_mock.go文件。 3.建立测试用例
func TestGetFromDB(t *testing.T) {//创建mock控制器控制器controller : gomock.NewController(t)defer controller.Finish()//触发最后的断言mockPeople : NewMockPeople(controller)mockPeople.EXPECT().GetName().Return(yi)mockPeople.EXPECT().GetAge().Return(18).Times(1) //预计返回18并被调用1次//调用测试方法 GetPeopleInfo(mockPeople)}
主要有下面几个步骤 1.创建mock控制器控制器定义了mock对象的作用域、生命周期、期待值。 2. defer controller.Finish()触发断言判断结果是否符合预期。 3. 创建Mock对象Mock对象实现了要模拟的接口。 4. 设计预期值接口的输入、返回。 5. 调用测试方法。 go:generate生成mock代码 在interface所对应的go文件中加入注释 1 //go:generate mockgen -destination db_mock.go -package gomock2 Test/gomock2 People
随后在命令行的当前目录下执行下面语句就能自动生成mock代码 1 go generate
或者在项目根目录输入执行当前项目中所有go:generate注释表示的内容。 1 go generate ./...
总结
感谢每一个认真阅读我文章的人
作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助 视频文档获取方式 这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。