fix #1467: failed to parse parameters with plugin functions

This commit is contained in:
lilong.129
2023-04-19 15:51:46 +08:00
parent f567f70045
commit 6ca9c5236b
5 changed files with 24 additions and 16 deletions
+2 -1
View File
@@ -1,6 +1,6 @@
# Release History # Release History
## v4.3.3 (2023-04-18) ## v4.3.3 (2023-04-19)
**go version** **go version**
@@ -18,6 +18,7 @@
- fix: screencap compatibility for shell v1 and v2 protocol - fix: screencap compatibility for shell v1 and v2 protocol
- fix: display parsed url in html report - fix: display parsed url in html report
- fix: fast fail not closing the websocket connection - fix: fast fail not closing the websocket connection
- fix #1467: failed to parse parameters with plugin functions
- fix #1549: avoid duplicate creating plugins - fix #1549: avoid duplicate creating plugins
## v4.3.2 (2022-12-26) ## v4.3.2 (2022-12-26)
+1 -1
View File
@@ -1 +1 @@
v4.3.3.2304182207 v4.3.3
+4 -4
View File
@@ -38,8 +38,8 @@ type iteratorStrategy struct {
PickOrder iteratorPickOrder `json:"pick_order,omitempty" yaml:"pick_order,omitempty"` PickOrder iteratorPickOrder `json:"pick_order,omitempty" yaml:"pick_order,omitempty"`
} }
func initParametersIterator(cfg *TConfig) (*ParametersIterator, error) { func (p *Parser) initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
parameters, err := loadParameters(cfg.Parameters, cfg.Variables) parameters, err := p.loadParameters(cfg.Parameters, cfg.Variables)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -236,7 +236,7 @@ configParameters = {
] ]
} }
*/ */
func loadParameters(configParameters map[string]interface{}, variablesMapping map[string]interface{}) ( func (p *Parser) loadParameters(configParameters map[string]interface{}, variablesMapping map[string]interface{}) (
map[string]Parameters, error) { map[string]Parameters, error) {
if len(configParameters) == 0 { if len(configParameters) == 0 {
@@ -263,7 +263,7 @@ func loadParameters(configParameters map[string]interface{}, variablesMapping ma
// => [["test1", "111111"], ["test2", "222222"]] // => [["test1", "111111"], ["test2", "222222"]]
// e.g. "app_version": "${gen_app_version()}" // e.g. "app_version": "${gen_app_version()}"
// => ["1.0.0", "1.0.1"] // => ["1.0.0", "1.0.1"]
parsedParameterContent, err := newParser().ParseString(rawValue.String(), variablesMapping) parsedParameterContent, err := p.ParseString(rawValue.String(), variablesMapping)
if err != nil { if err != nil {
log.Error().Err(err). log.Error().Err(err).
Str("parametersRawContent", rawValue.String()). Str("parametersRawContent", rawValue.String()).
+16 -8
View File
@@ -74,8 +74,9 @@ func TestLoadParameters(t *testing.T) {
variablesMapping := map[string]interface{}{ variablesMapping := map[string]interface{}{
"file": "account.csv", "file": "account.csv",
} }
parser := newParser()
for _, data := range testData { for _, data := range testData {
value, err := loadParameters(data.configParameters, variablesMapping) value, err := parser.loadParameters(data.configParameters, variablesMapping)
if !assert.Nil(t, err) { if !assert.Nil(t, err) {
t.Fatal() t.Fatal()
} }
@@ -92,21 +93,25 @@ func TestLoadParametersError(t *testing.T) {
{ {
map[string]interface{}{ map[string]interface{}{
"username_password": fmt.Sprintf("${parameterize(%s/account.csv)}", hrpExamplesDir), "username_password": fmt.Sprintf("${parameterize(%s/account.csv)}", hrpExamplesDir),
"user_agent": []interface{}{"iOS/10.1", "iOS/10.2"}}, "user_agent": []interface{}{"iOS/10.1", "iOS/10.2"},
},
}, },
{ {
map[string]interface{}{ map[string]interface{}{
"username-password": fmt.Sprintf("${parameterize(%s/account.csv)}", hrpExamplesDir), "username-password": fmt.Sprintf("${parameterize(%s/account.csv)}", hrpExamplesDir),
"user-agent": []interface{}{"iOS/10.1", "iOS/10.2"}}, "user-agent": []interface{}{"iOS/10.1", "iOS/10.2"},
},
}, },
{ {
map[string]interface{}{ map[string]interface{}{
"username-password": fmt.Sprintf("${param(%s/account.csv)}", hrpExamplesDir), "username-password": fmt.Sprintf("${param(%s/account.csv)}", hrpExamplesDir),
"user_agent": []interface{}{"iOS/10.1", "iOS/10.2"}}, "user_agent": []interface{}{"iOS/10.1", "iOS/10.2"},
},
}, },
} }
parser := newParser()
for _, data := range testData { for _, data := range testData {
_, err := loadParameters(data.configParameters, map[string]interface{}{}) _, err := parser.loadParameters(data.configParameters, map[string]interface{}{})
if !assert.Error(t, err) { if !assert.Error(t, err) {
t.Fatal() t.Fatal()
} }
@@ -240,8 +245,9 @@ func TestInitParametersIteratorCount(t *testing.T) {
1, 1,
}, },
} }
parser := newParser()
for _, data := range testData { for _, data := range testData {
iterator, err := initParametersIterator(data.cfg) iterator, err := parser.initParametersIterator(data.cfg)
if !assert.Nil(t, err) { if !assert.Nil(t, err) {
t.Fatal() t.Fatal()
} }
@@ -288,8 +294,9 @@ func TestInitParametersIteratorUnlimitedCount(t *testing.T) {
}, },
}, },
} }
parser := newParser()
for _, data := range testData { for _, data := range testData {
iterator, err := initParametersIterator(data.cfg) iterator, err := parser.initParametersIterator(data.cfg)
if !assert.Nil(t, err) { if !assert.Nil(t, err) {
t.Fatal() t.Fatal()
} }
@@ -370,8 +377,9 @@ func TestInitParametersIteratorContent(t *testing.T) {
map[string]interface{}{}, map[string]interface{}{},
}, },
} }
parser := newParser()
for _, data := range testData { for _, data := range testData {
iterator, err := initParametersIterator(data.cfg) iterator, err := parser.initParametersIterator(data.cfg)
if !assert.Nil(t, err) { if !assert.Nil(t, err) {
t.Fatal() t.Fatal()
} }
+1 -2
View File
@@ -386,7 +386,7 @@ func (r *CaseRunner) parseConfig() error {
r.parsedConfig.WebSocketSetting.checkWebSocket() r.parsedConfig.WebSocketSetting.checkWebSocket()
// parse testcase config parameters // parse testcase config parameters
parametersIterator, err := initParametersIterator(r.parsedConfig) parametersIterator, err := r.parser.initParametersIterator(r.parsedConfig)
if err != nil { if err != nil {
log.Error().Err(err). log.Error().Err(err).
Interface("parameters", r.parsedConfig.Parameters). Interface("parameters", r.parsedConfig.Parameters).
@@ -629,7 +629,6 @@ func (r *SessionRunner) GetSummary() (*TestCaseSummary, error) {
return caseSummary, nil return caseSummary, nil
} }
// updateSummary updates summary of StepResult. // updateSummary updates summary of StepResult.
func (r *SessionRunner) updateSummary(stepResult *StepResult) { func (r *SessionRunner) updateSummary(stepResult *StepResult) {
switch stepResult.StepType { switch stepResult.StepType {