golang-模拟http请求测试
直接给个例子,方便日常开发接口请求
创建个测试文体
vim test/test_request.go
编辑一下代码
package test
import (
	"io/ioutil"
	"net/http"
	"net/http/httptest"
	"testing"
)
func TestCustomClient(t *testing.T) {
	// 创建一个模拟的 HTTP 服务器
	server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		// 设置响应头
		w.Header().Set("Content-Type", "application/json") // 必须在 WriteHeader 和 Write 之前调用
		// 设置响应状态码
		w.WriteHeader(http.StatusOK)
		// 返回响应内容
		w.Write([]byte(`{"message": "Hi! golang"}`))
	}))
	defer server.Close() // 测试结束后关闭服务器
	// 发起请求到模拟的服务器
	resp, err := http.Get(server.URL)
	if err != nil {
		t.Fatalf("请求失败: %v", err)
	}
	defer resp.Body.Close()
	// 检查响应状态码
	if resp.StatusCode != http.StatusOK {
		t.Errorf("期望状态码 200,实际得到 %d", resp.StatusCode)
	}
	// 检查响应头
	contentType := resp.Header.Get("Content-Type")
	if contentType != "application/json" {
		t.Errorf("期望 Content-Type 为 application/json,实际得到 %s", contentType)
	}
	// 读取响应体
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		t.Fatalf("读取响应体失败: %v", err)
	}
	// 检查响应内容
	expectedBody := `{"message": "Hi! golang!"}`
	if string(body) != expectedBody {
		t.Errorf("期望响应体 %s,实际得到 %s", expectedBody, string(body))
	}
}
进行测试验证
go test test_request.go
正常通过显示如下:
% go test test/request_test.go
ok      command-line-arguments  0.536s
如果想要输出打印内容到命令行,可以加下参数-v :
go test test_request.go -v
如果想要指定测试文件内到某个测试函数,可以加下参数-run :
go test test_request.go -v -run ^函数名称$
其他参数:
使用 -bench 参数运行基准测试。
使用 -tags 参数运行带有标签的测试。
使用 -cover 参数生成覆盖率报告。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号