【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试

文章介绍了在Go中使用net/http/httptest包进行HTTP请求Mock测试的方法,通过创建Mock服务器模拟HTTP服务,避免了对外部服务的依赖。示例代码展示了如何定义被测接口,编写测试用例,并控制返回状态码和内容,以确保在服务不可用时也能进行有效测试。

目录

前言

http包的HandleFunc函数

http.Request/http.ResponseWriter

httptest

定义被测接口

测试代码

测试执行

总结

 资料获取方法


前言

Mock是一个做自动化测试永远绕不过去的话题。本文主要介绍使用标准库net/http/httptest完成HTTP请求的Mock的测试方法。

可能有的小伙伴不太了解mock在实际自动化测试过程中的意义,在我的另外一篇博客中有比较详细的描述,在本文中我们可以简单理解为它可以解决测试依赖。下面我们一起来学习它。

http包的HandleFunc函数

我们在前面的文章中介绍过怎么发送各种http请求,但是没有介绍过怎么使用golang启动一个http的服务。我们首先来看看怎么使用golang建立一个服务。

使用golang启动一个http服务非常简单,把下面的代码保存在httpServerDemo.go中,执行命令go run httpServerDemo.go就完成建立了一个监听在http://127.0.0.1:9090/上的服务。

package main

import (
	"fmt"
	"log"
	"net/http"
)

func httpServerDemo(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, `{"name":"Bingo","age":"18"}`)
}

func main() {
	http.HandleFunc("/", httpServerDemo)
	err := http.ListenAndServe(":9090", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

访问http://127.0.0.1:9090/可以看到下面的内容。

介绍如何建立一个服务,是因为我们要学习建立服务需要使用到的两个结构体http.Request/http.ResponseWriter。下面我们一起来看看他们的具体内容。

http.Request/http.ResponseWriter
type Request struct {
    Method    string
    URL    *url.URL
    Proto        string
    ProtoMajor    int
    ProtoMinor    int
    Header    Header
    Body    io.ReadCloser
    GetBody    func() (io.ReadCloser, error)
    ContentLength    int64
    TransferEncoding    []string
    Close    bool
...
type ResponseWriter interface {
    Header() Header
    Write([]byte) (int, error)
    WriteHeader(int)
}
</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值