mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-01 12:31:29 +08:00
refactor: merge v3
This commit is contained in:
138
httprunner/schema.py
Normal file
138
httprunner/schema.py
Normal file
@@ -0,0 +1,138 @@
|
||||
from enum import Enum
|
||||
from typing import Any
|
||||
from typing import Dict, Text, Union, Callable
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import HttpUrl
|
||||
|
||||
Name = Text
|
||||
Url = Text
|
||||
BaseUrl = Union[HttpUrl, Text]
|
||||
VariablesMapping = Dict[Text, Any]
|
||||
FunctionsMapping = Dict[Text, Callable]
|
||||
Headers = Dict[Text, Text]
|
||||
Verify = bool
|
||||
Hook = List[Text]
|
||||
Export = List[Text]
|
||||
Validators = List[Dict]
|
||||
Env = Dict[Text, Any]
|
||||
|
||||
|
||||
class MethodEnum(Text, Enum):
|
||||
GET = 'GET'
|
||||
POST = 'POST'
|
||||
PUT = "PUT"
|
||||
DELETE = "DELETE"
|
||||
HEAD = "HEAD"
|
||||
OPTIONS = "OPTIONS"
|
||||
PATCH = "PATCH"
|
||||
CONNECT = "CONNECT"
|
||||
TRACE = "TRACE"
|
||||
|
||||
|
||||
class TestsConfig(BaseModel):
|
||||
name: Name
|
||||
verify: Verify = False
|
||||
base_url: BaseUrl = ""
|
||||
variables: VariablesMapping = {}
|
||||
functions: FunctionsMapping = {}
|
||||
setup_hooks: Hook = []
|
||||
teardown_hooks: Hook = []
|
||||
export: Export = []
|
||||
|
||||
|
||||
class Request(BaseModel):
|
||||
method: MethodEnum = MethodEnum.GET
|
||||
url: Url
|
||||
params: Dict[Text, Text] = {}
|
||||
headers: Headers = {}
|
||||
req_json: Dict = Field({}, alias="json")
|
||||
data: Union[Text, Dict[Text, Any]] = ""
|
||||
cookies: Dict[Text, Text] = {}
|
||||
timeout: int = 120
|
||||
allow_redirects: bool = True
|
||||
verify: Verify = False
|
||||
|
||||
|
||||
class TestStep(BaseModel):
|
||||
name: Name
|
||||
request: Request
|
||||
variables: VariablesMapping = {}
|
||||
extract: Dict[Text, Text] = {}
|
||||
validators: Validators = Field([], alias="validate")
|
||||
|
||||
|
||||
class TestCase(BaseModel):
|
||||
config: TestsConfig
|
||||
teststeps: List[TestStep]
|
||||
|
||||
|
||||
class ProjectMeta(BaseModel):
|
||||
debugtalk_py: Text = ""
|
||||
variables: VariablesMapping = {}
|
||||
functions: FunctionsMapping = {}
|
||||
env: Env = {}
|
||||
PWD: Text
|
||||
test_path: Text
|
||||
|
||||
|
||||
class TestsMapping(BaseModel):
|
||||
project_meta: ProjectMeta
|
||||
testcases: List[TestCase]
|
||||
|
||||
|
||||
class TestCaseTime(BaseModel):
|
||||
start_at: float
|
||||
start_at_iso_format: Text
|
||||
duration: float
|
||||
|
||||
|
||||
class TestCaseInOut(BaseModel):
|
||||
vars: VariablesMapping = {}
|
||||
out: Export = []
|
||||
|
||||
|
||||
class RequestStat(BaseModel):
|
||||
content_size: float = 0
|
||||
response_time_ms: float = 0
|
||||
elapsed_ms: float = 0
|
||||
|
||||
|
||||
class SessionData(BaseModel):
|
||||
status: Text = ""
|
||||
name: Text = ""
|
||||
req_resp: List[Dict] = []
|
||||
stat: RequestStat = RequestStat()
|
||||
validators: Dict = {}
|
||||
|
||||
|
||||
class TestCaseSummary(BaseModel):
|
||||
name: Text = ""
|
||||
success: bool
|
||||
status: Text = ""
|
||||
attachment: Text = ""
|
||||
time: TestCaseTime
|
||||
in_out: TestCaseInOut = {}
|
||||
log: Text = ""
|
||||
step_datas: List[SessionData] = []
|
||||
|
||||
|
||||
class PlatformInfo(BaseModel):
|
||||
httprunner_version: Text
|
||||
python_version: Text
|
||||
platform: Text
|
||||
|
||||
|
||||
class Stat(BaseModel):
|
||||
total: int = 0
|
||||
success: int = 0
|
||||
fail: int = 0
|
||||
|
||||
|
||||
class TestSuiteSummary(BaseModel):
|
||||
success: bool
|
||||
stat: Stat
|
||||
time: TestCaseTime
|
||||
platform: PlatformInfo
|
||||
testcases: List[TestCaseSummary]
|
||||
Reference in New Issue
Block a user