httprunner/code/code.go

246 lines
8.6 KiB
Go

package code
import (
"github.com/pkg/errors"
)
// general: [0, 2)
const (
Success = 0
GeneralFail = 1
)
// environment: [2, 10)
var (
ConfigureError = errors.New("configure error") // 3
UnauthorizedError = errors.New("unauthorized error") // 4
NetworkError = errors.New("network error") // 5
NetworkConfigureError = errors.New("network configure error") // 6
PanicError = errors.New("panic error") // 7
InvalidPython3Venv = errors.New("prepare python3 venv failed") // 9
)
// loader: [10, 20)
var (
LoadFileError = errors.New("load file error") // 10
LoadJSONError = errors.New("load json error") // 11
LoadYAMLError = errors.New("load yaml error") // 12
LoadEnvError = errors.New("load .env error") // 13
LoadCSVError = errors.New("load csv error") // 14
InvalidCaseError = errors.New("invalid case error") // 15
UnsupportedFileExtension = errors.New("unsupported file extension") // 16
ReferencedFileNotFound = errors.New("referenced file not found") // 17
InvalidPluginFile = errors.New("invalid plugin file") // 18
InvalidParamError = errors.New("invalid param error") // 19
)
// parser: [20, 30)
var (
ParseError = errors.New("parse error") // 20
VariableNotFound = errors.New("variable not found") // 21
ParseFunctionError = errors.New("parse function failed") // 22
CallFunctionError = errors.New("call function failed") // 23
ParseVariablesError = errors.New("parse variables failed") // 24
FFmpegError = errors.New("ffmpeg error") // 25
FFprobeError = errors.New("ffprobe error") // 26
)
// runner: [30, 40)
var (
StartRunnerFailed = errors.New("start runner failed") // 30
InitPluginFailed = errors.New("init plugin failed") // 31
BuildGoPluginFailed = errors.New("build go plugin failed") // 32
BuildPyPluginFailed = errors.New("build py plugin failed") // 33
MaxRetryError = errors.New("max retry error") // 37
InterruptError = errors.New("interrupt error") // 38
TimeoutError = errors.New("timeout error") // 39
)
// summary: [40, 50)
var (
GenSummaryFailed = errors.New("generate summary failed") // 40
CollectValidResultFailed = errors.New("no valid result") // 44
DownloadFailed = errors.New("download failed") // 48
UploadFailed = errors.New("upload failed") // 49
)
// device related: [50, 70)
var (
DeviceConnectionError = errors.New("device general connection error") // 50
DeviceHTTPDriverError = errors.New("device HTTP driver error") // 51
DeviceUSBDriverError = errors.New("device USB driver error") // 52
DeviceAppNotInstalled = errors.New("device app not installed") // 59
DeviceGetInfoError = errors.New("device get info error") // 60
DeviceConfigureError = errors.New("device configure error") // 61
DeviceShellExecError = errors.New("device shell exec error") // 62
DeviceOfflineError = errors.New("device offline") // 63
DeviceInstallFailed = errors.New("device install app failed") // 64
DeviceScreenShotError = errors.New("device screenshot error") // 65
DeviceCaptureLogError = errors.New("device capture log error") // 66
DeviceUIResponseSlow = errors.New("device UI response slow") // 67
)
// UI automation related: [70, 80)
var (
MobileUIDriverAppNotInstalled = errors.New("mobile UI driver app not installed") // 68
MobileUIDriverAppCrashed = errors.New("mobile UI driver app crashed") // 69
MobileUIDriverError = errors.New("mobile UI driver error") // 70
MobileUILaunchAppError = errors.New("mobile UI launch app error") // 71
MobileUITapError = errors.New("mobile UI tap error") // 72
MobileUISwipeError = errors.New("mobile UI swipe error") // 73
MobileUIInputError = errors.New("mobile UI input error") // 74
MobileUIValidationError = errors.New("mobile UI validation error") // 75
MobileUIAssertForegroundAppError = errors.New("mobile UI assert foreground app error") // 76
MobileUIAssertForegroundActivityError = errors.New("mobile UI assert foreground activity error") // 77
MobileUIPopupError = errors.New("mobile UI popup error") // 78
LoopActionNotFoundError = errors.New("loop action not found error") // 79
)
// AI related: [80, 90)
var (
CVEnvMissedError = errors.New("CV env missed error") // 80
CVRequestError = errors.New("CV prepare request error") // 81
CVServiceConnectionError = errors.New("CV service connect error") // 82
CVResponseError = errors.New("CV parse response error") // 83
CVResultNotFoundError = errors.New("CV result not found") // 84
LLMEnvMissedError = errors.New("LLM env missed error") // 85
StateUnknowError = errors.New("detect state failed") // 89
)
// trackings related: [90, 100)
var (
TrackingGetError = errors.New("get trackings failed") // 90
TrackingFomatError = errors.New("tracking format error") // 91
)
// risk control related: [100, 110)
var (
RiskControlLogout = errors.New("risk control logout") // 100
RiskControlSlideVerification = errors.New("risk control slide verification") // 101
RiskControlAccountActivation = errors.New("risk control account activation") // 102
)
var errorsMap = map[error]int{
// environment
ConfigureError: 3,
UnauthorizedError: 4,
NetworkError: 5,
NetworkConfigureError: 6,
PanicError: 7,
InvalidPython3Venv: 9,
// loader
LoadFileError: 10,
LoadJSONError: 11,
LoadYAMLError: 12,
LoadEnvError: 13,
LoadCSVError: 14,
InvalidCaseError: 15,
UnsupportedFileExtension: 16,
ReferencedFileNotFound: 17,
InvalidPluginFile: 18,
InvalidParamError: 19,
// parser
ParseError: 20,
VariableNotFound: 21,
ParseFunctionError: 22,
CallFunctionError: 23,
ParseVariablesError: 24,
FFmpegError: 25,
FFprobeError: 26,
// runner
StartRunnerFailed: 30,
InitPluginFailed: 31,
BuildGoPluginFailed: 32,
BuildPyPluginFailed: 33,
MaxRetryError: 37,
InterruptError: 38,
TimeoutError: 39,
// summary
GenSummaryFailed: 40,
CollectValidResultFailed: 44,
DownloadFailed: 48,
UploadFailed: 49,
// device related
DeviceConnectionError: 50,
DeviceHTTPDriverError: 51,
DeviceUSBDriverError: 52,
DeviceAppNotInstalled: 59,
DeviceGetInfoError: 60,
DeviceConfigureError: 61,
DeviceShellExecError: 62,
DeviceOfflineError: 63,
DeviceInstallFailed: 64,
DeviceScreenShotError: 65,
DeviceCaptureLogError: 66,
DeviceUIResponseSlow: 67,
// UI automation related
MobileUIDriverAppNotInstalled: 68,
MobileUIDriverAppCrashed: 69,
MobileUIDriverError: 70,
MobileUILaunchAppError: 71,
MobileUITapError: 72,
MobileUISwipeError: 73,
MobileUIInputError: 74,
MobileUIValidationError: 75,
MobileUIAssertForegroundAppError: 76,
MobileUIAssertForegroundActivityError: 77,
MobileUIPopupError: 78,
LoopActionNotFoundError: 79,
// AI related
CVEnvMissedError: 80,
CVRequestError: 81,
CVServiceConnectionError: 82,
CVResponseError: 83,
CVResultNotFoundError: 84,
LLMEnvMissedError: 85,
StateUnknowError: 89,
// trackings related
TrackingGetError: 90,
TrackingFomatError: 91,
// risk control related
RiskControlLogout: 100,
RiskControlSlideVerification: 101,
RiskControlAccountActivation: 102,
}
func IsErrorPredefined(err error) bool {
_, ok := errorsMap[errors.Cause(err)]
return ok
}
func GetErrorCode(err error) (errCode int) {
if err == nil {
return Success
}
e := errors.Cause(err)
if code, ok := errorsMap[e]; ok {
errCode = code
} else {
errCode = GeneralFail
}
return
}
func GetErrorByCode(errCode int) error {
if errCode < 0 {
return nil
}
for key, value := range errorsMap {
if value == errCode {
return key
}
}
return nil
}