refactor: merge step variables with session variables

This commit is contained in:
debugtalk
2022-10-18 20:56:46 +08:00
parent 23abc56a82
commit 59dd2c39d4
5 changed files with 13 additions and 25 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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