基于gin的单元测试之httptest

目前我们的后端服务提供大量的restful api接口,每次上线都需要测试那边回归一遍这些接口,造成人力的浪费。正好借着这次单元测试和持续集成,我们引入了httptest框架,结合gin来做接口单元测试。

httptest是golang官方提供的一个包,位于/src/net/http/httptest下。

其原理的话我也看了源码研究了下,这里大致说下,它有一个ResponseRecorder结构体,它实现了http.ResponseWriter,同时它自身又包含了http.Response,前者是server端维度下的response,后者是client端维度下的response,也就是说,ResponseRecorder同时实现了server和client的功能。

好接下来看看如何使用httptest

httptest构建

 // Get 根据特定请求uri,发起get请求返回响应
func Get(uri string, router *gin.Engine) []byte {
    // 构造get请求
    req := httptest.NewRequest("GET", uri, nil)
    // 初始化响应
    w := httptest.NewRecorder()

    // 调用相应的handler接口
    router.ServeHTTP(w, req)

    // 提取响应
    result := w.Result()
    defer result.Body.Close()

    // 读取响应body
    body,_ := ioutil.ReadAll(result.Body)
    return body
}

// PostForm 根据特定请求uri和参数param,以表单形式传递参数,发起post请求返回响应
func PostForm(uri stri
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值