mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
64 lines
1.1 KiB
Go
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
|
|
}
|