mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-10 23:12:41 +08:00
refactor: SessionRunner, parseStepStruct
This commit is contained in:
@@ -284,13 +284,6 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
||||
ContentSize: 0,
|
||||
}
|
||||
|
||||
// merge step variables with session variables
|
||||
stepVariables, err := r.ParseStepVariables(step.Variables)
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, "parse step variables failed")
|
||||
return
|
||||
}
|
||||
|
||||
defer func() {
|
||||
// update testcase summary
|
||||
if err != nil {
|
||||
@@ -298,7 +291,7 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
||||
}
|
||||
}()
|
||||
|
||||
err = prepareUpload(r.caseRunner.parser, step, stepVariables)
|
||||
err = prepareUpload(r.caseRunner.parser, step, step.Variables)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -310,29 +303,29 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
||||
rb := newRequestBuilder(parser, config, step.Request)
|
||||
rb.req.Method = strings.ToUpper(string(step.Request.Method))
|
||||
|
||||
err = rb.prepareUrlParams(stepVariables)
|
||||
err = rb.prepareUrlParams(step.Variables)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = rb.prepareHeaders(stepVariables)
|
||||
err = rb.prepareHeaders(step.Variables)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = rb.prepareBody(stepVariables)
|
||||
err = rb.prepareBody(step.Variables)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// add request object to step variables, could be used in setup hooks
|
||||
stepVariables["hrp_step_name"] = step.Name
|
||||
stepVariables["hrp_step_request"] = rb.requestMap
|
||||
stepVariables["request"] = rb.requestMap // setup hooks compatible with v3
|
||||
step.Variables["hrp_step_name"] = step.Name
|
||||
step.Variables["hrp_step_request"] = rb.requestMap
|
||||
step.Variables["request"] = rb.requestMap // setup hooks compatible with v3
|
||||
|
||||
// deal with setup hooks
|
||||
for _, setupHook := range step.SetupHooks {
|
||||
_, err := parser.Parse(setupHook, stepVariables)
|
||||
_, err := parser.Parse(setupHook, step.Variables)
|
||||
if err != nil {
|
||||
return stepResult, errors.Wrap(err, "run setup hooks failed")
|
||||
}
|
||||
@@ -405,12 +398,12 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
||||
}
|
||||
|
||||
// add response object to step variables, could be used in teardown hooks
|
||||
stepVariables["hrp_step_response"] = respObj.respObjMeta
|
||||
stepVariables["response"] = respObj.respObjMeta
|
||||
step.Variables["hrp_step_response"] = respObj.respObjMeta
|
||||
step.Variables["response"] = respObj.respObjMeta
|
||||
|
||||
// deal with teardown hooks
|
||||
for _, teardownHook := range step.TeardownHooks {
|
||||
_, err := parser.Parse(teardownHook, stepVariables)
|
||||
_, err := parser.Parse(teardownHook, step.Variables)
|
||||
if err != nil {
|
||||
return stepResult, errors.Wrap(err, "run teardown hooks failed")
|
||||
}
|
||||
@@ -421,14 +414,14 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
||||
|
||||
// extract variables from response
|
||||
extractors := step.Extract
|
||||
extractMapping := respObj.Extract(extractors, stepVariables)
|
||||
extractMapping := respObj.Extract(extractors, step.Variables)
|
||||
stepResult.ExportVars = extractMapping
|
||||
|
||||
// override step variables with extracted variables
|
||||
stepVariables = mergeVariables(stepVariables, extractMapping)
|
||||
step.Variables = mergeVariables(step.Variables, extractMapping)
|
||||
|
||||
// validate response
|
||||
err = respObj.Validate(step.Validators, stepVariables)
|
||||
err = respObj.Validate(step.Validators, step.Variables)
|
||||
sessionData.Validators = respObj.validationResults
|
||||
if err == nil {
|
||||
sessionData.Success = true
|
||||
|
||||
Reference in New Issue
Block a user