From f7efadf2073162d7c3d17a8b44c455ec7eae6596 Mon Sep 17 00:00:00 2001 From: debugtalk <mail@debugtalk.com> Date: Mon, 15 Nov 2021 15:12:21 +0800 Subject: [PATCH] change: add session variables --- boomer.go | 3 +-- runner.go | 20 ++++++++++---------- step_test.go | 5 ++--- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/boomer.go b/boomer.go index fdeff43..f9c603e 100644 --- a/boomer.go +++ b/boomer.go @@ -43,11 +43,10 @@ func (b *Boomer) convertBoomerTask(testcase *TestCase) *boomer.Task { Weight: testcase.Config.Weight, Fn: func() { config := &testcase.Config - extractedVariables := make(map[string]interface{}) for _, step := range testcase.TestSteps { var err error start := time.Now() - stepData, err := runner.runStep(step, config, extractedVariables) + stepData, err := runner.runStep(step, config) elapsed := time.Since(start).Nanoseconds() / int64(time.Millisecond) if err == nil { boomer.RecordSuccess(step.Type(), step.Name(), elapsed, stepData.ResponseLength) diff --git a/runner.go b/runner.go index c630c5d..30f7832 100644 --- a/runner.go +++ b/runner.go @@ -36,13 +36,15 @@ func NewRunner(t *testing.T) *Runner { }, Timeout: 30 * time.Second, }, + sessionVariables: make(map[string]interface{}), } } type Runner struct { - t *testing.T - debug bool - client *http.Client + t *testing.T + debug bool + client *http.Client + sessionVariables map[string]interface{} } func (r *Runner) SetDebug(debug bool) *Runner { @@ -88,10 +90,8 @@ func (r *Runner) runCase(testcase *TestCase) error { log.Info().Str("testcase", config.Name).Msg("run testcase start") - extractedVariables := make(map[string]interface{}) - for _, step := range testcase.TestSteps { - _, err := r.runStep(step, config, extractedVariables) + _, err := r.runStep(step, config) if err != nil { return err } @@ -101,12 +101,12 @@ func (r *Runner) runCase(testcase *TestCase) error { return nil } -func (r *Runner) runStep(step IStep, config *TConfig, extractedVariables map[string]interface{}) (stepData *StepData, err error) { +func (r *Runner) runStep(step IStep, config *TConfig) (stepData *StepData, err error) { log.Info().Str("step", step.Name()).Msg("run step start") // override variables - // step variables > extracted variables from previous steps - stepVariables := mergeVariables(step.ToStruct().Variables, extractedVariables) + // step variables > session variables (extracted variables from previous steps) + stepVariables := mergeVariables(step.ToStruct().Variables, r.sessionVariables) // step variables > testcase config variables stepVariables = mergeVariables(stepVariables, config.Variables) @@ -139,7 +139,7 @@ func (r *Runner) runStep(step IStep, config *TConfig, extractedVariables map[str // update extracted variables for k, v := range stepData.ExportVars { - extractedVariables[k] = v + r.sessionVariables[k] = v } log.Info(). diff --git a/step_test.go b/step_test.go index 2aea0c2..1f2e56e 100644 --- a/step_test.go +++ b/step_test.go @@ -77,12 +77,11 @@ func TestRunRequestRun(t *testing.T) { config := &TConfig{ BaseURL: "https://postman-echo.com", } - extractedVariables := make(map[string]interface{}) runner := NewRunner(t).SetDebug(true) - if _, err := runner.runStep(stepGET, config, extractedVariables); err != nil { + if _, err := runner.runStep(stepGET, config); err != nil { t.Fatalf("tStep.Run() error: %s", err) } - if _, err := runner.runStep(stepPOSTData, config, extractedVariables); err != nil { + if _, err := runner.runStep(stepPOSTData, config); err != nil { t.Fatalf("tStepPOSTData.Run() error: %s", err) } }