refactor: merge step variables with session variables

This commit is contained in:
debugtalk
2022-10-18 20:56:46 +08:00
parent c23053ca16
commit 0916665ade
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
for _, step := range r.testCase.TestSteps {
// TODO: parse step
// parse step name
parsedName, err := r.parser.ParseString(step.Name(), r.sessionVariables)
if err != nil {
@@ -66,6 +67,12 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error {
log.Info().Str("step", stepName).
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
stepResult, err := step.Run(r)
stepResult.Name = stepName
@@ -120,8 +127,8 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error {
return nil
}
// MergeStepVariables merges step variables with config variables and session variables
func (r *SessionRunner) MergeStepVariables(vars map[string]interface{}) (map[string]interface{}, error) {
// mergeStepVariables merges step variables with config variables and session variables
func (r *SessionRunner) mergeStepVariables(vars map[string]interface{}) (map[string]interface{}, error) {
// override variables
// step variables > session variables (extracted variables from previous steps)
overrideVars := mergeVariables(vars, r.sessionVariables)

View File

@@ -554,12 +554,7 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err
ContentSize: 0,
}
screenshots := make([]string, 0)
// override step variables
stepVariables, err := s.MergeStepVariables(step.Variables)
if err != nil {
return
}
stepVariables := step.Variables
var osType string
var mobileStep *MobileStep

View File

@@ -291,6 +291,7 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err
Success: false,
ContentSize: 0,
}
stepVariables := step.Variables
defer func() {
// 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)
if err != nil {
return

View File

@@ -51,6 +51,7 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe
StepType: stepTypeTestCase,
Success: false,
}
stepVariables := s.step.Variables
defer func() {
// 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)
// copy testcase to avoid data racing

View File

@@ -254,6 +254,7 @@ func runStepWebSocket(r *SessionRunner, step *TStep) (stepResult *StepResult, er
Success: false,
ContentSize: 0,
}
stepVariables := step.Variables
defer func() {
// 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()
parser := r.parser
config := r.parsedConfig