MCPcopy
hub / github.com/httprunner/httprunner / loadParameters

Method loadParameters

hrp/parameters.go:243–301  ·  view source on GitHub ↗

* loadParameters loads parameters from multiple sources. parameter value may be in three types: (1) data list, e.g. ["iOS/10.1", "iOS/10.2", "iOS/10.3"] (2) call built-in parameterize function, "${parameterize(account.csv)}" (3) call custom function in debugtalk.py, "${gen_app_version()}" co

(configParameters map[string]interface{}, variablesMapping map[string]interface{})

Source from the content-addressed store, hash-verified

241 }
242*/
243func (p *Parser) loadParameters(configParameters map[string]interface{}, variablesMapping map[string]interface{}) (
244 map[string]Parameters, error) {
245
246 if len(configParameters) == 0 {
247 return nil, nil
248 }
249
250 parsedParameters := make(map[string]Parameters)
251
252 for k, v := range configParameters {
253 var parametersRawList interface{}
254 rawValue := reflect.ValueOf(v)
255
256 switch rawValue.Kind() {
257 case reflect.Slice:
258 // case 1
259 // e.g. user_agent: ["iOS/10.1", "iOS/10.2"]
260 // => ["iOS/10.1", "iOS/10.2"]
261 parametersRawList = rawValue.Interface()
262
263 case reflect.String:
264 // case 2 or case 3
265 // e.g. username-password: ${parameterize(examples/hrp/account.csv)}
266 // => [{"username": "test1", "password": "111111"}, {"username": "test2", "password": "222222"}]
267 // => [["test1", "111111"], ["test2", "222222"]]
268 // e.g. "app_version": "${gen_app_version()}"
269 // => ["1.0.0", "1.0.1"]
270 parsedParameterContent, err := p.ParseString(rawValue.String(), variablesMapping)
271 if err != nil {
272 log.Error().Err(err).
273 Str("parametersRawContent", rawValue.String()).
274 Msg("parse parameters content failed")
275 return nil, err
276 }
277
278 parsedParameterRawValue := reflect.ValueOf(parsedParameterContent)
279 if parsedParameterRawValue.Kind() != reflect.Slice {
280 log.Error().
281 Interface("parsedParameterContent", parsedParameterRawValue).
282 Msg("parsed parameters content is not slice")
283 return nil, errors.New("parsed parameters content should be slice")
284 }
285 parametersRawList = parsedParameterRawValue.Interface()
286
287 default:
288 log.Error().
289 Interface("parameters", configParameters).
290 Msg("config parameters raw value should be slice or string (functions call)")
291 return nil, errors.New("config parameters raw value format error")
292 }
293
294 parameterSlice, err := convertParameters(k, parametersRawList)
295 if err != nil {
296 return nil, err
297 }
298 parsedParameters[k] = parameterSlice
299 }
300 return parsedParameters, nil

Callers 3

TestLoadParametersFunction · 0.80
TestLoadParametersErrorFunction · 0.80

Calls 4

ParseStringMethod · 0.95
convertParametersFunction · 0.85
ErrMethod · 0.80
StringMethod · 0.65

Tested by 2

TestLoadParametersFunction · 0.64
TestLoadParametersErrorFunction · 0.64