Files
httprunner/runner.go
2021-09-22 14:25:41 +08:00

64 lines
1.1 KiB
Go

package httpboomer
import (
"net/http"
"github.com/imroc/req"
)
func HttpRunner() *Runner {
return &Runner{}
}
type Runner struct {
}
func (r *Runner) Run(testcases ...*TestCase) error {
for _, testcase := range testcases {
if err := r.runCase(testcase); err != nil {
return err
}
}
return nil
}
func (r *Runner) runCase(testcase *TestCase) error {
// config := testcase.Config
for _, step := range testcase.TestSteps {
if err := r.runStep(step); err != nil {
return err
}
}
return nil
}
func (r *Runner) runStep(req IStep) error {
return req.Run()
}
func (r *Runner) GetSummary() *TestCaseSummary {
return &TestCaseSummary{}
}
func (step *TStep) Run() error {
var v []interface{}
v = append(v, req.Header(step.Request.Headers))
v = append(v, req.Param(step.Request.Params))
for cookieName, cookieValue := range step.Request.Cookies {
v = append(v, &http.Cookie{
Name: cookieName,
Value: cookieValue,
})
}
req.Debug = true
resp, err := req.Do(string(step.Request.Method), step.Request.URL, v...)
if err != nil {
return err
}
resp.Response().Body.Close()
return nil
}