• io.Reader 实践 ApiTool 单元测试


    package main

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

    func GET(req *http.Request) {
        c := http.Client{}
        richReq(req)
        postReq(req)
        resp, err := c.Do(req)
        if err != nil {
            handleErr(err)
            return
        }
        defer resp.Body.Close()
        handleResp(resp)
    }

    func handleErr(err error) {
        os.WriteFile("err.txt", []byte(fmt.Sprint(err)), 0777)
    }

    func handleResp(resp *http.Response) {
        os.WriteFile("Status.txt", []byte(resp.Status), 0777)
        if resp.StatusCode != 200 {
            os.Remove("resp.json")
            return
        }
        bs, err := io.ReadAll(resp.Body)
        if err != nil {
            handleErr(err)
            return
        }
        os.WriteFile("resp.json", bs, 0777)
    }

    func richReq(req *http.Request) {
        req.URL.Scheme = CONF["Scheme"].(string)
        req.URL.Host = CONF["Host"].(string)
        header := http.Header{}
        for k, v := range CONF["Header"].(map[string]interface{}) {
            header[k] = []string{v.(string)}
        }
        req.Header = header
    }

    func postReq(req *http.Request) {
        if req.Method == "POST" {
            bs, err := os.Open("req.json")
            if err != nil {
                handleErr(err)
                return
            }
            req.Body = io.NopCloser(bs)
            req.Header.Set("Content-Type", "applicatipn/json")
            os.WriteFile("postReq.txt", []byte("postReq"), 0777)
        }
    }
    package main

    import (
        "net/http"
        "net/url"
        "testing"
    )

    func TestGET(t *testing.T) {
        type args struct {
            req *http.Request
        }
        tests := []struct {
            name string
            args args
        }{
            // {name: "", args: args{req: &http.Request{Method: "GET", URL: &url.URL{Path: "/api/Security/GetCaptcha"}}}},
            // {name: "", args: args{req: &http.Request{Method: "GET", URL: &url.URL{Path: "/api/List/Company"}}}},
            {name: "", args: args{req: &http.Request{Method: "POST", URL: &url.URL{Path: "/api/CreateUpdate/Company"}}}},
        }
        for _, tt := range tests {
            t.Run(tt.name, func(t *testing.T) {
                GET(tt.args.req)
            })
        }
    }
  • 相关阅读:
    安装Python及工具
    Python能做什么
    学习Python前序
    [摘]selenium-ide命令
    [摘]selenium-ide编辑命令
    selenium-ide学习
    敏捷个人课后练习:管理情绪
    敏捷个人课后练习:释放情绪
    敏捷个人课后练习:接纳情绪
    敏捷个人课后练习:承诺
  • 原文地址:https://www.cnblogs.com/rsapaper/p/15847947.html
Copyright © 2020-2023  润新知