mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 07:26:55 +08:00
refactor: update config variables by parameters
This commit is contained in:
+1
-5
@@ -107,11 +107,7 @@ func (b *HRPBoomer) convertBoomerTask(testcase *TestCase, rendezvousList []*Rend
|
|||||||
parameterVariables = it.Next()
|
parameterVariables = it.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sessionRunner.updateConfigVariables(parameterVariables)
|
||||||
if err := sessionRunner.parseConfig(parameterVariables); err != nil {
|
|
||||||
log.Error().Err(err).Msg("parse config failed")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
for _, step := range testcase.TestSteps {
|
for _, step := range testcase.TestSteps {
|
||||||
|
|||||||
+2
-10
@@ -172,8 +172,7 @@ func (r *HRPRunner) Run(testcases ...ITestCase) error {
|
|||||||
parameterVariables = it.Next()
|
parameterVariables = it.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sessionRunner.parseConfig(parameterVariables)
|
if err = sessionRunner.Start(parameterVariables); err != nil {
|
||||||
if err = sessionRunner.Start(); err != nil {
|
|
||||||
log.Error().Err(err).Msg("[Run] run testcase failed")
|
log.Error().Err(err).Msg("[Run] run testcase failed")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -224,16 +223,9 @@ func (r *HRPRunner) NewSessionRunner(testcase *TestCase) (*SessionRunner, error)
|
|||||||
sessionRunner.parser.plugin = plugin
|
sessionRunner.parser.plugin = plugin
|
||||||
|
|
||||||
// parse testcase config
|
// parse testcase config
|
||||||
if err := sessionRunner.parseConfig(nil); err != nil {
|
if err := sessionRunner.parseConfig(); err != nil {
|
||||||
return nil, errors.Wrap(err, "parse testcase config failed")
|
return nil, errors.Wrap(err, "parse testcase config failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse testcase config parameters
|
|
||||||
err = initParameterIterator(sessionRunner.parsedConfig, "runner")
|
|
||||||
if err != nil {
|
|
||||||
log.Error().Interface("parameters", sessionRunner.parsedConfig.Parameters).Err(err).Msg("parse config parameters failed")
|
|
||||||
return nil, errors.Wrap(err, "parse testcase config parameters failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
return sessionRunner, nil
|
return sessionRunner, nil
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-6
@@ -44,10 +44,14 @@ func (r *SessionRunner) LogOn() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Start runs the test steps in sequential order.
|
// Start runs the test steps in sequential order.
|
||||||
func (r *SessionRunner) Start() error {
|
// givenVars is used for data driven
|
||||||
|
func (r *SessionRunner) Start(givenVars map[string]interface{}) error {
|
||||||
config := r.testCase.Config
|
config := r.testCase.Config
|
||||||
log.Info().Str("testcase", config.Name).Msg("run testcase start")
|
log.Info().Str("testcase", config.Name).Msg("run testcase start")
|
||||||
|
|
||||||
|
// update config variables with given variables
|
||||||
|
r.updateConfigVariables(givenVars)
|
||||||
|
|
||||||
// reset session runner
|
// reset session runner
|
||||||
r.resetSession()
|
r.resetSession()
|
||||||
|
|
||||||
@@ -101,8 +105,16 @@ func (r *SessionRunner) MergeStepVariables(vars map[string]interface{}) (map[str
|
|||||||
return parsedVariables, nil
|
return parsedVariables, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseConfig parses testcase config with given variables, stores to parsedConfig.
|
// updateConfigVariables updates config variables with given variables.
|
||||||
func (r *SessionRunner) parseConfig(variables map[string]interface{}) error {
|
// this is used for data driven
|
||||||
|
func (r *SessionRunner) updateConfigVariables(givenVars map[string]interface{}) {
|
||||||
|
for k, v := range givenVars {
|
||||||
|
r.parsedConfig.Variables[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseConfig parses testcase config, stores to parsedConfig.
|
||||||
|
func (r *SessionRunner) parseConfig() error {
|
||||||
cfg := r.testCase.Config
|
cfg := r.testCase.Config
|
||||||
|
|
||||||
r.parsedConfig = &TConfig{}
|
r.parsedConfig = &TConfig{}
|
||||||
@@ -113,10 +125,9 @@ func (r *SessionRunner) parseConfig(variables map[string]interface{}) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// parse config variables
|
// parse config variables
|
||||||
mergedVars := mergeVariables(variables, cfg.Variables)
|
parsedVariables, err := r.parser.ParseVariables(cfg.Variables)
|
||||||
parsedVariables, err := r.parser.ParseVariables(mergedVars)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Interface("variables", mergedVars).Err(err).Msg("parse config variables failed")
|
log.Error().Interface("variables", cfg.Variables).Err(err).Msg("parse config variables failed")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r.parsedConfig.Variables = parsedVariables
|
r.parsedConfig.Variables = parsedVariables
|
||||||
@@ -138,6 +149,13 @@ func (r *SessionRunner) parseConfig(variables map[string]interface{}) error {
|
|||||||
// ensure correction of think time config
|
// ensure correction of think time config
|
||||||
r.parsedConfig.ThinkTimeSetting.checkThinkTime()
|
r.parsedConfig.ThinkTimeSetting.checkThinkTime()
|
||||||
|
|
||||||
|
// parse testcase config parameters
|
||||||
|
err = initParameterIterator(r.parsedConfig, "runner")
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Interface("parameters", r.parsedConfig.Parameters).Err(err).Msg("parse config parameters failed")
|
||||||
|
return errors.Wrap(err, "parse testcase config parameters failed")
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,8 +69,6 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (*StepResult, error
|
|||||||
if s.step.Name != "" {
|
if s.step.Name != "" {
|
||||||
copiedTestCase.Config.Name = s.step.Name
|
copiedTestCase.Config.Name = s.step.Name
|
||||||
}
|
}
|
||||||
// merge & override variables
|
|
||||||
copiedTestCase.Config.Variables = mergeVariables(stepVariables, copiedTestCase.Config.Variables)
|
|
||||||
// merge & override extractors
|
// merge & override extractors
|
||||||
copiedTestCase.Config.Export = mergeSlices(s.step.Export, copiedTestCase.Config.Export)
|
copiedTestCase.Config.Export = mergeSlices(s.step.Export, copiedTestCase.Config.Export)
|
||||||
|
|
||||||
@@ -81,7 +79,8 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (*StepResult, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
err = sessionRunner.Start()
|
// run referenced testcase with step variables
|
||||||
|
err = sessionRunner.Start(stepVariables)
|
||||||
stepResult.Elapsed = time.Since(start).Milliseconds()
|
stepResult.Elapsed = time.Since(start).Milliseconds()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
stepResult.Attachment = err.Error()
|
stepResult.Attachment = err.Error()
|
||||||
|
|||||||
Reference in New Issue
Block a user