美文网首页
测试用例

测试用例

作者: Best博客 | 来源:发表于2021-04-02 17:01 被阅读0次

mock

你的server需要的依赖,在声明server就得注入进去,而且该依赖必须得用interface的方式声明

面向接口编程能够不断解耦,同时也能缩小测试范围,编写测试用例

你需要下载2个工具包

go get github.com/golang/mock/mockgen//mockgen负责生成我们定义的interface的mock文件
go get github.com/golang/mock/gomock //使用mockgen生成的文件的时候需要用到的胶水包
go get github.com/bmizerany/assert //断言,方面我们定制自己期望的结果

image.png

执行命令

mockgen.exe -source=source.go -destination=db_mock.go -package=source
source.go 你interface生成的路径位置,db_mock.go生成的mock文件的位置(注意文件夹提前生成好),source生成的包名

demo

import (
    "context"
    "fmt"
    "github.com/bmizerany/assert"
    "github.com/golang/mock/gomock"
    "sync"
    "testing"
    "time"
)
func Test_coreImpl_CreateConsumer(t *testing.T) {
    mockCtl := gomock.NewController(t)
    //review 指的就是你上一步生成的mock文件的包名了,mock工具生成的文件,都提供NewMockXxx的方法,方便我们获取mock对象
    mockReview := review.NewMockReview(mockCtl)
    mockSource := source.NewMockSource(mockCtl)
    mockRepository := store.NewMockRepository(mockCtl)

    //我们能通过这里的EXPECT 去定义我们mock的方法传参数类型,以及返回值
    //gomock.Any() 参数可以是任何类型
    // .AnyTimes() 方法可以被调用多少次,无数次
    //Return(a, nil)  返回值
    mockRepository.EXPECT().GetPermanent().Return([]db.ContentReviewPermanent{
        db.ContentReviewPermanent{Id: 1, TextId: 0, ImageId: 2, SourceTableName: (&db.ContentReviewBbsCnhubeiUser{}).TableName()},
        db.ContentReviewPermanent{Id: 2, TextId: 2, ImageId: 1, SourceTableName: (&db.ContentReviewBbsCnhubeiArticle{}).TableName()},
    }, nil).AnyTimes()

    mockReview.EXPECT().SensitiveWords(gomock.Any()).Return(false, nil).AnyTimes()
    mockRepository.EXPECT().CreateAuditV2(gomock.Any()).Return(nil).AnyTimes()

    t.Run("CreateConsumer", func(t *testing.T) {
        c := NewCoreImpl(mockReview, mockSource, mockRepository)
        c.imageWorkNum = 3
        c.textWorkNum = 30
        c.updPermanentData()

        assert.Equal(t, len(c.permanentData), 2)
        assert.Equal(t, c.permanentData[0].imageId, int32(2))
        assert.Equal(t, c.permanentData[1].textId, int32(2))


        t.Log(t, "consumer success")
    })
}


参考文献:
https://geektutu.com/post/quick-gomock.html

相关文章

  • 软件测试基本流程

    1.需求分析(产品经理) 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交...

  • 1.软件测试流程

    1.需求分析 2.编写测试用例(测什么,怎么测) 3.评审测试用例 4.搭建测试环境 5.等待开发提交测试包 6....

  • 可复用测试用例研究(用例库)

    软件测试的关键环节是设计和执行测试用例。测试用例的质量与测试人员的技能、经验以及对被测软件的理解密切相关。如果测...

  • 安全测试

    安全测试用例 常见的安全测试应该能够做到check以下内容 测试用例应该 包含每个HTTP参数的SQL注入测试 测...

  • 用例加载与组织(unittest)

    1. 通过测试套件TestSuite组织测试用例 1.创建测试套件2.测试用例加载到测试套件,加入方式测试类('测...

  • 如何提高测试效率

    个人1.先明确测试流程2.获取有效信息,明确需求3.设计测试用例规范,沟通效率(测试用例八大要素:测试用例编号,测...

  • maven打包

    mvn install命令 1.打包会执行测试用例,如果测试用例报错不通过是打不了包的 2.maven打包时跳过测...

  • 测试用例模板设计需要了解的点

    测试用例是进行测试的最小单元粒度。在编写测试用例之前需要很多准备工作去分析需求,提取测试点,然后根据提取的测...

  • 关于软件定制测试流程

    软件定制的测试流程一般是:制定测试计划-编辑测试用例-执行测试用例-发现问题并且提交bug-开发工程师修正Bug测...

  • 产品经理碎碎念(7)——需求测试

    当程序员将需求开发完毕后,就进入了测试阶段。 测试阶段正式开始之前,测试同学需要编写测试用例并进行测试用例评审。测...

网友评论

      本文标题:测试用例

      本文链接:https://www.haomeiwen.com/subject/mlwbhltx.html