From e80fa6f0a4bc5868d42e247940f7e9b4c0d1d0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E8=81=AA?= Date: Tue, 4 Jan 2022 21:01:16 +0800 Subject: [PATCH] feat: data-driven. --- examples/parameters_test.yaml | 2 +- parser.go | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/examples/parameters_test.yaml b/examples/parameters_test.yaml index 412acaab..0eff1384 100644 --- a/examples/parameters_test.yaml +++ b/examples/parameters_test.yaml @@ -4,7 +4,7 @@ config: user_agent: [ "iOS/10.1", "iOS/10.2" ] username-password: ${parameterize(examples/account.csv)} parameters_setting: - strategy: ["random", "sequential"] + strategy: "" iteration: 10 variables: app_version: v1 diff --git a/parser.go b/parser.go index 0a337f37..0d5c70e6 100644 --- a/parser.go +++ b/parser.go @@ -613,16 +613,6 @@ func initParameterIterator(cfg *TConfig, mode string) (err error) { } rawValue := reflect.ValueOf(cfg.ParametersSetting.Strategy) switch rawValue.Kind() { - case reflect.String: - if len(rawValue.String()) == 0 { - cfg.ParametersSetting.Strategy = strategySequential - } else { - cfg.ParametersSetting.Strategy = strings.ToLower(rawValue.String()) - } - cfg.ParametersSetting.Iterator = append( - cfg.ParametersSetting.Iterator, - newIterator(genCartesianProduct(parameters), cfg.ParametersSetting.Strategy.(string), cfg.ParametersSetting.Iteration), - ) case reflect.Slice: if len(parameters) != rawValue.Len() { return errors.New("parameters and strategy should have the same length") @@ -634,6 +624,22 @@ func initParameterIterator(cfg *TConfig, mode string) (err error) { ) } } + case reflect.String: + if len(rawValue.String()) == 0 { + cfg.ParametersSetting.Strategy = strategySequential + } else { + cfg.ParametersSetting.Strategy = strings.ToLower(rawValue.String()) + } + cfg.ParametersSetting.Iterator = append( + cfg.ParametersSetting.Iterator, + newIterator(genCartesianProduct(parameters), cfg.ParametersSetting.Strategy.(string), cfg.ParametersSetting.Iteration), + ) + default: + cfg.ParametersSetting.Strategy = strategySequential + cfg.ParametersSetting.Iterator = append( + cfg.ParametersSetting.Iterator, + newIterator(genCartesianProduct(parameters), cfg.ParametersSetting.Strategy.(string), cfg.ParametersSetting.Iteration), + ) } return nil }