mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 18:11:21 +08:00
fix #1467: failed to parse parameters with plugin functions
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Release History
|
||||
|
||||
## v4.3.3 (2023-04-18)
|
||||
## v4.3.3 (2023-04-19)
|
||||
|
||||
**go version**
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
- fix: screencap compatibility for shell v1 and v2 protocol
|
||||
- fix: display parsed url in html report
|
||||
- fix: fast fail not closing the websocket connection
|
||||
- fix #1467: failed to parse parameters with plugin functions
|
||||
- fix #1549: avoid duplicate creating plugins
|
||||
|
||||
## v4.3.2 (2022-12-26)
|
||||
|
||||
@@ -1 +1 @@
|
||||
v4.3.3.2304182207
|
||||
v4.3.3
|
||||
@@ -38,8 +38,8 @@ type iteratorStrategy struct {
|
||||
PickOrder iteratorPickOrder `json:"pick_order,omitempty" yaml:"pick_order,omitempty"`
|
||||
}
|
||||
|
||||
func initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
|
||||
parameters, err := loadParameters(cfg.Parameters, cfg.Variables)
|
||||
func (p *Parser) initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
|
||||
parameters, err := p.loadParameters(cfg.Parameters, cfg.Variables)
|
||||
if err != nil {
|
||||
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) {
|
||||
|
||||
if len(configParameters) == 0 {
|
||||
@@ -263,7 +263,7 @@ func loadParameters(configParameters map[string]interface{}, variablesMapping ma
|
||||
// => [["test1", "111111"], ["test2", "222222"]]
|
||||
// e.g. "app_version": "${gen_app_version()}"
|
||||
// => ["1.0.0", "1.0.1"]
|
||||
parsedParameterContent, err := newParser().ParseString(rawValue.String(), variablesMapping)
|
||||
parsedParameterContent, err := p.ParseString(rawValue.String(), variablesMapping)
|
||||
if err != nil {
|
||||
log.Error().Err(err).
|
||||
Str("parametersRawContent", rawValue.String()).
|
||||
|
||||
@@ -74,8 +74,9 @@ func TestLoadParameters(t *testing.T) {
|
||||
variablesMapping := map[string]interface{}{
|
||||
"file": "account.csv",
|
||||
}
|
||||
parser := newParser()
|
||||
for _, data := range testData {
|
||||
value, err := loadParameters(data.configParameters, variablesMapping)
|
||||
value, err := parser.loadParameters(data.configParameters, variablesMapping)
|
||||
if !assert.Nil(t, err) {
|
||||
t.Fatal()
|
||||
}
|
||||
@@ -92,21 +93,25 @@ func TestLoadParametersError(t *testing.T) {
|
||||
{
|
||||
map[string]interface{}{
|
||||
"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{}{
|
||||
"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{}{
|
||||
"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 {
|
||||
_, err := loadParameters(data.configParameters, map[string]interface{}{})
|
||||
_, err := parser.loadParameters(data.configParameters, map[string]interface{}{})
|
||||
if !assert.Error(t, err) {
|
||||
t.Fatal()
|
||||
}
|
||||
@@ -240,8 +245,9 @@ func TestInitParametersIteratorCount(t *testing.T) {
|
||||
1,
|
||||
},
|
||||
}
|
||||
parser := newParser()
|
||||
for _, data := range testData {
|
||||
iterator, err := initParametersIterator(data.cfg)
|
||||
iterator, err := parser.initParametersIterator(data.cfg)
|
||||
if !assert.Nil(t, err) {
|
||||
t.Fatal()
|
||||
}
|
||||
@@ -288,8 +294,9 @@ func TestInitParametersIteratorUnlimitedCount(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
parser := newParser()
|
||||
for _, data := range testData {
|
||||
iterator, err := initParametersIterator(data.cfg)
|
||||
iterator, err := parser.initParametersIterator(data.cfg)
|
||||
if !assert.Nil(t, err) {
|
||||
t.Fatal()
|
||||
}
|
||||
@@ -370,8 +377,9 @@ func TestInitParametersIteratorContent(t *testing.T) {
|
||||
map[string]interface{}{},
|
||||
},
|
||||
}
|
||||
parser := newParser()
|
||||
for _, data := range testData {
|
||||
iterator, err := initParametersIterator(data.cfg)
|
||||
iterator, err := parser.initParametersIterator(data.cfg)
|
||||
if !assert.Nil(t, err) {
|
||||
t.Fatal()
|
||||
}
|
||||
|
||||
@@ -386,7 +386,7 @@ func (r *CaseRunner) parseConfig() error {
|
||||
r.parsedConfig.WebSocketSetting.checkWebSocket()
|
||||
|
||||
// parse testcase config parameters
|
||||
parametersIterator, err := initParametersIterator(r.parsedConfig)
|
||||
parametersIterator, err := r.parser.initParametersIterator(r.parsedConfig)
|
||||
if err != nil {
|
||||
log.Error().Err(err).
|
||||
Interface("parameters", r.parsedConfig.Parameters).
|
||||
@@ -629,7 +629,6 @@ func (r *SessionRunner) GetSummary() (*TestCaseSummary, error) {
|
||||
return caseSummary, nil
|
||||
}
|
||||
|
||||
|
||||
// updateSummary updates summary of StepResult.
|
||||
func (r *SessionRunner) updateSummary(stepResult *StepResult) {
|
||||
switch stepResult.StepType {
|
||||
|
||||
Reference in New Issue
Block a user