mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-21 16:22:17 +08:00
feat: input params by funcion in ui automation
This commit is contained in:
@@ -28,6 +28,7 @@ var Functions = map[string]interface{}{
|
|||||||
"md5": MD5, // call with one argument
|
"md5": MD5, // call with one argument
|
||||||
"parameterize": loadFromCSV,
|
"parameterize": loadFromCSV,
|
||||||
"P": loadFromCSV,
|
"P": loadFromCSV,
|
||||||
|
"split_by_comma": splitByComma, // call with one argument
|
||||||
"environ": os.Getenv,
|
"environ": os.Getenv,
|
||||||
"ENV": os.Getenv,
|
"ENV": os.Getenv,
|
||||||
"load_ws_message": loadMessage,
|
"load_ws_message": loadMessage,
|
||||||
@@ -225,3 +226,7 @@ func multipartContentType(w *TFormDataWriter) string {
|
|||||||
}
|
}
|
||||||
return w.Writer.FormDataContentType()
|
return w.Writer.FormDataContentType()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func splitByComma(s string) []string {
|
||||||
|
return strings.Split(s, ",")
|
||||||
|
}
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ type MobileAction struct {
|
|||||||
Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"` // used to identify the action in log
|
Identifier string `json:"identifier,omitempty" yaml:"identifier,omitempty"` // used to identify the action in log
|
||||||
MaxRetryTimes int `json:"max_retry_times,omitempty" yaml:"max_retry_times,omitempty"` // max retry times
|
MaxRetryTimes int `json:"max_retry_times,omitempty" yaml:"max_retry_times,omitempty"` // max retry times
|
||||||
Direction interface{} `json:"direction,omitempty" yaml:"direction,omitempty"` // used by swipe to tap text or app
|
Direction interface{} `json:"direction,omitempty" yaml:"direction,omitempty"` // used by swipe to tap text or app
|
||||||
|
Function string `json:"function,omitempty" yaml:"function,omitempty"` // used to replace params
|
||||||
Index int `json:"index,omitempty" yaml:"index,omitempty"` // index of the target element, should start from 1
|
Index int `json:"index,omitempty" yaml:"index,omitempty"` // index of the target element, should start from 1
|
||||||
Timeout int `json:"timeout,omitempty" yaml:"timeout,omitempty"` // TODO: wait timeout in seconds for mobile action
|
Timeout int `json:"timeout,omitempty" yaml:"timeout,omitempty"` // TODO: wait timeout in seconds for mobile action
|
||||||
IgnoreNotFoundError bool `json:"ignore_NotFoundError,omitempty" yaml:"ignore_NotFoundError,omitempty"` // ignore error if target element not found
|
IgnoreNotFoundError bool `json:"ignore_NotFoundError,omitempty" yaml:"ignore_NotFoundError,omitempty"` // ignore error if target element not found
|
||||||
@@ -89,6 +90,13 @@ func WithIndex(index int) ActionOption {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithFunction replaces params
|
||||||
|
func WithFunction(function string) ActionOption {
|
||||||
|
return func(o *MobileAction) {
|
||||||
|
o.Function = function
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// WithDirection inputs direction (up, down, left, right)
|
// WithDirection inputs direction (up, down, left, right)
|
||||||
func WithDirection(direction string) ActionOption {
|
func WithDirection(direction string) ActionOption {
|
||||||
return func(o *MobileAction) {
|
return func(o *MobileAction) {
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ var (
|
|||||||
WithDescription = uixt.WithDescription
|
WithDescription = uixt.WithDescription
|
||||||
WithDirection = uixt.WithDirection
|
WithDirection = uixt.WithDirection
|
||||||
WithCustomDirection = uixt.WithCustomDirection
|
WithCustomDirection = uixt.WithCustomDirection
|
||||||
|
WithFunction = uixt.WithFunction
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -618,6 +618,13 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err
|
|||||||
|
|
||||||
// run actions
|
// run actions
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
|
if action.Function != "" {
|
||||||
|
parsedParams, err := parser.ParseString(action.Function, stepVariables)
|
||||||
|
if err != nil {
|
||||||
|
return stepResult, err
|
||||||
|
}
|
||||||
|
action.Params = parsedParams
|
||||||
|
}
|
||||||
if action.Params, err = parser.Parse(action.Params, stepVariables); err != nil {
|
if action.Params, err = parser.Parse(action.Params, stepVariables); err != nil {
|
||||||
return stepResult, errors.Wrap(err, "parse action params failed")
|
return stepResult, errors.Wrap(err, "parse action params failed")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user