mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-06 07:57:27 +08:00
fix #1467: failed to parse parameters with plugin functions
This commit is contained in:
+2
-1
@@ -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 @@
|
|||||||
v4.3.3.2304182207
|
v4.3.3
|
||||||
+4
-4
@@ -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
@@ -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
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user