mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 23:51:25 +08:00
refactor: NewCaseRunner
This commit is contained in:
@@ -1 +1 @@
|
|||||||
v5.0.0-beta-2505120918
|
v5.0.0-beta-2505121525
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ func (r *HRPRunner) Run(testcases ...ITestCase) (err error) {
|
|||||||
// run testcase one by one
|
// run testcase one by one
|
||||||
for _, testcase := range testCases {
|
for _, testcase := range testCases {
|
||||||
// each testcase has its own case runner
|
// each testcase has its own case runner
|
||||||
caseRunner, err := r.NewCaseRunner(*testcase)
|
caseRunner, err := NewCaseRunner(*testcase, r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Msg("[Run] init case runner failed")
|
log.Error().Err(err).Msg("[Run] init case runner failed")
|
||||||
return err
|
return err
|
||||||
@@ -276,12 +276,16 @@ func (r *HRPRunner) Run(testcases ...ITestCase) (err error) {
|
|||||||
return runErr
|
return runErr
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCaseRunner creates a new case runner for testcase.
|
// NewCaseRunner initializes a CaseRunner for a given testcase.
|
||||||
// each testcase has its own case runner
|
// Each testcase is associated with its own CaseRunner instance.
|
||||||
func (r *HRPRunner) NewCaseRunner(testcase TestCase) (*CaseRunner, error) {
|
// If the provided hrpRunner is nil, a default HRPRunner will be created and used.
|
||||||
|
func NewCaseRunner(testcase TestCase, hrpRunner *HRPRunner) (*CaseRunner, error) {
|
||||||
|
if hrpRunner == nil {
|
||||||
|
hrpRunner = NewRunner(nil)
|
||||||
|
}
|
||||||
caseRunner := &CaseRunner{
|
caseRunner := &CaseRunner{
|
||||||
TestCase: testcase,
|
TestCase: testcase,
|
||||||
hrpRunner: r,
|
hrpRunner: hrpRunner,
|
||||||
parser: NewParser(),
|
parser: NewParser(),
|
||||||
uixtDrivers: make(map[string]*uixt.XTDriver),
|
uixtDrivers: make(map[string]*uixt.XTDriver),
|
||||||
}
|
}
|
||||||
@@ -289,7 +293,7 @@ func (r *HRPRunner) NewCaseRunner(testcase TestCase) (*CaseRunner, error) {
|
|||||||
|
|
||||||
// init parser plugin
|
// init parser plugin
|
||||||
if config.PluginSetting != nil {
|
if config.PluginSetting != nil {
|
||||||
plugin, err := initPlugin(config.Path, r.venv, r.pluginLogOn)
|
plugin, err := initPlugin(config.Path, hrpRunner.venv, hrpRunner.pluginLogOn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "init plugin failed")
|
return nil, errors.Wrap(err, "init plugin failed")
|
||||||
}
|
}
|
||||||
@@ -317,39 +321,18 @@ func (r *HRPRunner) NewCaseRunner(testcase TestCase) (*CaseRunner, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set request timeout in seconds
|
// set request timeout in seconds
|
||||||
if config.RequestTimeout != 0 {
|
if parsedConfig.RequestTimeout != 0 {
|
||||||
r.SetRequestTimeout(config.RequestTimeout)
|
hrpRunner.SetRequestTimeout(parsedConfig.RequestTimeout)
|
||||||
}
|
}
|
||||||
// set testcase timeout in seconds
|
// set testcase timeout in seconds
|
||||||
if config.CaseTimeout != 0 {
|
if parsedConfig.CaseTimeout != 0 {
|
||||||
r.SetCaseTimeout(config.CaseTimeout)
|
hrpRunner.SetCaseTimeout(parsedConfig.CaseTimeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
caseRunner.TestCase.Config = parsedConfig
|
caseRunner.TestCase.Config = parsedConfig
|
||||||
return caseRunner, nil
|
return caseRunner, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewCaseRunner(testcase TestCase) (*CaseRunner, error) {
|
|
||||||
caseRunner := &CaseRunner{
|
|
||||||
TestCase: testcase,
|
|
||||||
}
|
|
||||||
// config := testcase.Config.Get()
|
|
||||||
|
|
||||||
// TODO: init parser plugin
|
|
||||||
|
|
||||||
// parse testcase config
|
|
||||||
parsedConfig, err := caseRunner.parseConfig()
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Wrap(err, "parse testcase config failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: set request timeout in seconds
|
|
||||||
// TODO: set testcase timeout in seconds
|
|
||||||
|
|
||||||
caseRunner.TestCase.Config = parsedConfig
|
|
||||||
return caseRunner, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type CaseRunner struct {
|
type CaseRunner struct {
|
||||||
TestCase // each testcase init its own CaseRunner
|
TestCase // each testcase init its own CaseRunner
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -80,7 +80,7 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe
|
|||||||
// merge & override extractors
|
// merge & override extractors
|
||||||
config.Export = mergeSlices(s.StepExport, config.Export)
|
config.Export = mergeSlices(s.StepExport, config.Export)
|
||||||
|
|
||||||
caseRunner, err := r.caseRunner.hrpRunner.NewCaseRunner(*copiedTestCase)
|
caseRunner, err := NewCaseRunner(*copiedTestCase, r.caseRunner.hrpRunner)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Msg("create case runner failed")
|
log.Error().Err(err).Msg("create case runner failed")
|
||||||
return stepResult, err
|
return stepResult, err
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ func TestSessionRunner(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
caseRunner, _ := hrp.NewRunner(t).NewCaseRunner(testcase)
|
caseRunner, _ := hrp.NewCaseRunner(testcase, hrp.NewRunner(t))
|
||||||
sessionRunner := caseRunner.NewSession()
|
sessionRunner := caseRunner.NewSession()
|
||||||
step := testcase.TestSteps[0]
|
step := testcase.TestSteps[0]
|
||||||
if !assert.Equal(t, step.Config().Variables["varFoo"], "${max($a, $b)}") {
|
if !assert.Equal(t, step.Config().Variables["varFoo"], "${max($a, $b)}") {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ func TestRunRequestStatOn(t *testing.T) {
|
|||||||
Config: hrp.NewConfig("test").SetBaseURL("https://postman-echo.com"),
|
Config: hrp.NewConfig("test").SetBaseURL("https://postman-echo.com"),
|
||||||
TestSteps: []hrp.IStep{stepGET, stepPOSTData},
|
TestSteps: []hrp.IStep{stepGET, stepPOSTData},
|
||||||
}
|
}
|
||||||
caseRunner, _ := hrp.NewRunner(t).SetHTTPStatOn().NewCaseRunner(testcase)
|
caseRunner, _ := hrp.NewCaseRunner(testcase, hrp.NewRunner(t).SetHTTPStatOn())
|
||||||
sessionRunner := caseRunner.NewSession()
|
sessionRunner := caseRunner.NewSession()
|
||||||
summary, err := sessionRunner.Start(nil)
|
summary, err := sessionRunner.Start(nil)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|||||||
Reference in New Issue
Block a user