unit test finished

main
Your Name 2024-07-14 11:08:04 +08:00
parent 12a0c78983
commit 641b73c56c
5 changed files with 146 additions and 0 deletions

View File

@ -0,0 +1,52 @@
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
// 全局公用链接,请求频率比较频繁
//var (
// client = http.Client{
// Transport: &http.Transport{DisableKeepAlives: false},
// }
//)
func main() {
apiUrl := "http://127.0.0.1:9090/query"
apiParseUrl, err := url.Parse(apiUrl) //url不带参数传入返回一个结构体
if err != nil {
fmt.Println("url parse err:", err)
}
data := url.Values{}
data.Set("name", "王奥")
data.Set("age", "18") //set url中带参的数据
paramStr := data.Encode() //编码
apiParseUrl.RawQuery = paramStr //赋值到url的结构体中,组成完整的url编码对象
//自定义client 禁用keepalive 适用于请求频率不频繁,每次请求生成一个短链接,之后释放
tr := http.Transport{DisableKeepAlives: true} //短链接
client := http.Client{
Transport: &tr,
}
//生成请求对象
req, err := http.NewRequest("GET", apiParseUrl.String(), nil)
if err != nil {
fmt.Println("start new req err:", err)
}
//如果使用默认client
//http.DefaultClient.Do(req)
//发送自定义请求
resp, err := client.Do(req)
if err != nil {
return
}
defer resp.Body.Close() //关闭请求体
//读取返回体
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("read resp body err:", err)
}
fmt.Println("resp body:", string(body))
}

22
HTTP/http_client_get.go Normal file
View File

@ -0,0 +1,22 @@
package main
import (
"fmt"
"io"
"net/http"
)
//http client
func main() {
resp, err := http.Get("http://127.0.0.1:9090/query?name=sb&age=12") //没办法自定义请求参数和client
if err != nil {
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return
}
fmt.Println(string(body))
}

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"io"
"net/http"
"os"
)
@ -16,9 +17,23 @@ func f1(w http.ResponseWriter, r *http.Request) {
}
func f2(w http.ResponseWriter, r *http.Request) {
//对于GET请求query param参数都放在url请求体中没有数据
queryParam := r.URL.Query()
name := queryParam.Get("name")
age := queryParam.Get("age")
fmt.Println(name, age) //自动识别url中的问号中的参数
fmt.Println(r.URL)
fmt.Println(r.Method)
fmt.Println(io.ReadAll(r.Body))
w.Write([]byte("success"))
}
// http server
func main() {
http.HandleFunc("/web", f1)
http.HandleFunc("/query", f2)
http.ListenAndServe("127.0.0.1:9090", nil)
}

33
test/spilt_string.go Normal file
View File

@ -0,0 +1,33 @@
package Splitstring
import "strings"
//切割字符串
//example
// abc,b =>[a,c]
//func Split(str string, sep string) []string {
// tmp := make([]string, 0)
// for _, v := range str {
// if string(v) == sep {
// continue
// } else {
// tmp = append(tmp, string(v))
// }
// }
// return tmp
//}
// abc,b =>[a,c]
func Split(str string, sep string) []string {
ret := make([]string, 0)
index := strings.Index(str, sep)
for index >= 0 {
ret = append(ret, str[:index])
str = str[index+1:]
index = strings.Index(str, sep)
}
ret = append(ret, str)
return ret
}

24
test/spilt_string_test.go Normal file
View File

@ -0,0 +1,24 @@
package Splitstring
import (
"reflect"
"testing"
)
//单元测试,测试每个函数的功能是否正常
func TestSplit(t *testing.T) {
got := Split("babcbef", "b")
want := []string{"", "a", "c", "ef"}
if !reflect.DeepEqual(want, got) {
t.Errorf("want:%v, but got:%v\n", want, got)
}
}
func TestSplit2(t *testing.T) {
got := Split("a:b:c", ":")
want := []string{"a", "b", "c"}
if !reflect.DeepEqual(want, got) {
t.Errorf("want:%v, but got:%v\n", want, got)
}
}