golang分层测试之http接口测试入门教程

前言

前几话主要讲解关于使用golang进行单元测试,在单元测试的上一层就是接口测试,本节主要讲使用golang进行接口测试,其中主要以http协议的接口测试来讲解

golang中的http请求

golang中拥有一个原生的http依赖库:net/http,http服务器的建立还是http客户端的开发,都会使用到这个依赖库,这里主要讲解时client部分,作为请求发起方应用于日常的接口测试,例示代码如下:

get请求

复制代码
package main

import (
 "fmt"
 "io/ioutil"
 "net/http"
)

func main() {
 //模拟一个get提交请求
 resp, err := http.Get("http://127.0.0.1:12345/checkon")
 if err != nil {
  panic(err)
 }
 defer resp.Body.Close() //关闭连接
 body, err := ioutil.ReadAll(resp.Body) //读取body的内容
 fmt.Println(string(body))
}
复制代码

 结果

E:\go_project>go run testget.go
{
 "code": 200,
 "data": "",
 "msg": "online",
 "state": "success"
}

post请求:

复制代码
package main
import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "strings"
)
func main(){
    url:="http://www.shop.com:8088/Api/Weixinapi/getCommentsTypes/"
    resp,err:= http.Post(url,"application/x-www-form-urlencoded",strings.NewReader("goodsId=123")) //如果多个参数后面紧跟
    if err != nil {
        log.Println("is error")
        log.Println(err)
        return
    }
    defer resp.Body.Close()
    data,_:= ioutil.ReadAll(resp.Body)
    fmt.Println(string(data))
}
复制代码

结果:

1
2
{"respMsg":"\u6210\u529f","resultCode":"0000","data":{"typesList":[{"evaluateId":0,"evaluateanem":"\u5168\u90e8"},{"evaluateId":1,"evaluateanem":"\u6709\u56fe\u8bc4\u4e
f7 (0)"},{"evaluateId":2,"evaluateanem":"\u597d\u8bc4 (0)"},{"evaluateId":3,"evaluateanem":"\u4e2d\u8bc4 (0)"},{"evaluateId":4,"evaluateanem":"\u5dee\u8bc4 (0)"}]}}

带json的post请求

我们大部分应用到的restful接口都是用json格式的请求体,对应的golang的http请求也会有相关的方式post json请求体

 

复制代码
package main

import (
 "fmt"
 "io/ioutil"
 "net/http"
  "bytes"
 "encoding/json"
)


type HttpData struct {

 Flag int `json:"flag"`
 Msg string `json:"msg"`

}

func main() {

 url := "http://127.0.0.1:12345/postdata"
 contentType := "application/json;charset=utf-8"

 var httpdata HttpData
 httpdata.Flag = 1
 httpdata.Msg = "terrychow"

 
 b ,err := json.Marshal(httpdata)
 if err != nil {
  fmt.Println("json format error:", err)
  return
 }

 body := bytes.NewBuffer(b)

 resp, err := http.Post(url, contentType, body)
 if err != nil {
  fmt.Println("Post failed:", err)
  return
 }

 defer resp.Body.Close()


 content, err := ioutil.ReadAll(resp.Body)
 if err != nil {
  fmt.Println("Read failed:", err)
  return
 }

 fmt.Println("header:", resp.Header)
 fmt.Println("content:", string(content))

}
复制代码

 

posted on   孤灯引路人  阅读(341)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2020-11-18 go里面面向对象

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示