mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-10 23:12:41 +08:00
refactor: merge step variables with session variables
This commit is contained in:
@@ -57,6 +57,7 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error {
|
|||||||
|
|
||||||
// run step in sequential order
|
// run step in sequential order
|
||||||
for _, step := range r.testCase.TestSteps {
|
for _, step := range r.testCase.TestSteps {
|
||||||
|
// TODO: parse step
|
||||||
// parse step name
|
// parse step name
|
||||||
parsedName, err := r.parser.ParseString(step.Name(), r.sessionVariables)
|
parsedName, err := r.parser.ParseString(step.Name(), r.sessionVariables)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -66,6 +67,12 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error {
|
|||||||
log.Info().Str("step", stepName).
|
log.Info().Str("step", stepName).
|
||||||
Str("type", string(step.Type())).Msg("run step start")
|
Str("type", string(step.Type())).Msg("run step start")
|
||||||
|
|
||||||
|
// merge step variables with session variables
|
||||||
|
step.Struct().Variables, err = r.mergeStepVariables(step.Struct().Variables)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "merge step variables with session variables failed")
|
||||||
|
}
|
||||||
|
|
||||||
// run step
|
// run step
|
||||||
stepResult, err := step.Run(r)
|
stepResult, err := step.Run(r)
|
||||||
stepResult.Name = stepName
|
stepResult.Name = stepName
|
||||||
@@ -120,8 +127,8 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MergeStepVariables merges step variables with config variables and session variables
|
// mergeStepVariables merges step variables with config variables and session variables
|
||||||
func (r *SessionRunner) MergeStepVariables(vars map[string]interface{}) (map[string]interface{}, error) {
|
func (r *SessionRunner) mergeStepVariables(vars map[string]interface{}) (map[string]interface{}, error) {
|
||||||
// override variables
|
// override variables
|
||||||
// step variables > session variables (extracted variables from previous steps)
|
// step variables > session variables (extracted variables from previous steps)
|
||||||
overrideVars := mergeVariables(vars, r.sessionVariables)
|
overrideVars := mergeVariables(vars, r.sessionVariables)
|
||||||
|
|||||||
@@ -554,12 +554,7 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err
|
|||||||
ContentSize: 0,
|
ContentSize: 0,
|
||||||
}
|
}
|
||||||
screenshots := make([]string, 0)
|
screenshots := make([]string, 0)
|
||||||
|
stepVariables := step.Variables
|
||||||
// override step variables
|
|
||||||
stepVariables, err := s.MergeStepVariables(step.Variables)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var osType string
|
var osType string
|
||||||
var mobileStep *MobileStep
|
var mobileStep *MobileStep
|
||||||
|
|||||||
@@ -291,6 +291,7 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
|||||||
Success: false,
|
Success: false,
|
||||||
ContentSize: 0,
|
ContentSize: 0,
|
||||||
}
|
}
|
||||||
|
stepVariables := step.Variables
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
// update testcase summary
|
// update testcase summary
|
||||||
@@ -299,12 +300,6 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// override step variables
|
|
||||||
stepVariables, err := r.MergeStepVariables(step.Variables)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err = prepareUpload(r.parser, step, stepVariables)
|
err = prepareUpload(r.parser, step, stepVariables)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe
|
|||||||
StepType: stepTypeTestCase,
|
StepType: stepTypeTestCase,
|
||||||
Success: false,
|
Success: false,
|
||||||
}
|
}
|
||||||
|
stepVariables := s.step.Variables
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
// update testcase summary
|
// update testcase summary
|
||||||
@@ -59,11 +60,6 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
stepVariables, err := r.MergeStepVariables(s.step.Variables)
|
|
||||||
if err != nil {
|
|
||||||
return stepResult, err
|
|
||||||
}
|
|
||||||
|
|
||||||
stepTestCase := s.step.TestCase.(*TestCase)
|
stepTestCase := s.step.TestCase.(*TestCase)
|
||||||
|
|
||||||
// copy testcase to avoid data racing
|
// copy testcase to avoid data racing
|
||||||
|
|||||||
@@ -254,6 +254,7 @@ func runStepWebSocket(r *SessionRunner, step *TStep) (stepResult *StepResult, er
|
|||||||
Success: false,
|
Success: false,
|
||||||
ContentSize: 0,
|
ContentSize: 0,
|
||||||
}
|
}
|
||||||
|
stepVariables := step.Variables
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
// update testcase summary
|
// update testcase summary
|
||||||
@@ -262,12 +263,6 @@ func runStepWebSocket(r *SessionRunner, step *TStep) (stepResult *StepResult, er
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// override step variables
|
|
||||||
stepVariables, err := r.MergeStepVariables(step.Variables)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
sessionData := newSessionData()
|
sessionData := newSessionData()
|
||||||
parser := r.parser
|
parser := r.parser
|
||||||
config := r.parsedConfig
|
config := r.parsedConfig
|
||||||
|
|||||||
Reference in New Issue
Block a user