From c3477bdcc3d341e417bde76c0b0f56bd305c29f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E8=81=AA?= Date: Wed, 5 Jan 2022 11:46:30 +0800 Subject: [PATCH] feat: data-driven. --- runner.go | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/runner.go b/runner.go index 07c32789..c321b855 100644 --- a/runner.go +++ b/runner.go @@ -98,9 +98,19 @@ func (r *hrpRunner) Run(testcases ...ITestCase) error { log.Error().Err(err).Msg("[Run] convert ITestCase interface to TestCase struct failed") return err } - if err := r.newCaseRunner(testcase).run(); err != nil { - log.Error().Err(err).Msg("[Run] run testcase failed") - return err + cfg := testcase.Config.ToStruct() + for it := cfg.ParametersSetting.Iterators[0]; it.HasNext(); { + // iterate through all parameter iterators and update case variables + // iterate through all parameter iterators and update case variables + for _, it := range cfg.ParametersSetting.Iterators { + if it.HasNext() { + cfg.Variables = mergeVariables(it.Next(), cfg.Variables) + } + } + if err := r.newCaseRunner(testcase).run(); err != nil { + log.Error().Err(err).Msg("[Run] run testcase failed") + return err + } } } return nil @@ -143,20 +153,13 @@ func (r *caseRunner) run() error { } cfg := config.ToStruct() log.Info().Str("testcase", config.Name()).Msg("run testcase start") - for it := cfg.ParametersSetting.Iterators[0]; it.HasNext(); { - // iterate through all parameter iterators and update case variables - for _, it = range cfg.ParametersSetting.Iterators { - if it.HasNext() { - cfg.Variables = mergeVariables(it.Next(), cfg.Variables) - } - } - r.startTime = time.Now() - for index := range r.TestCase.TestSteps { - _, err := r.runStep(index, cfg) - if err != nil { - if r.hrpRunner.failfast { - return errors.Wrap(err, "abort running due to failfast setting") - } + + r.startTime = time.Now() + for index := range r.TestCase.TestSteps { + _, err := r.runStep(index, cfg) + if err != nil { + if r.hrpRunner.failfast { + return errors.Wrap(err, "abort running due to failfast setting") } } }