diff --git a/httprunner/loader/check.py b/httprunner/loader/check.py index c899634a..d428b75e 100644 --- a/httprunner/loader/check.py +++ b/httprunner/loader/check.py @@ -17,7 +17,7 @@ class JsonSchemaChecker(object): Api.parse_obj(content) except ValidationError as ex: logger.error(ex) - raise exceptions.FileFormatError + raise exceptions.FileFormatError(ex) @staticmethod def validate_testcase_format(content): @@ -27,7 +27,7 @@ class JsonSchemaChecker(object): TestCase.parse_obj(content) except ValidationError as ex: logger.error(ex) - raise exceptions.FileFormatError + raise exceptions.FileFormatError(ex) @staticmethod def validate_testsuite_format(content): @@ -37,7 +37,7 @@ class JsonSchemaChecker(object): TestSuite.parse_obj(content) except ValidationError as ex: logger.error(ex) - raise exceptions.FileFormatError + raise exceptions.FileFormatError(ex) def is_test_path(path): diff --git a/httprunner/schema/__init__.py b/httprunner/schema/__init__.py index 12be9833..6ff26ad9 100644 --- a/httprunner/schema/__init__.py +++ b/httprunner/schema/__init__.py @@ -1,3 +1,3 @@ from .api import Api -from .testcase import ProjectMeta, TestCase, TestCases +from .testcase import ProjectMeta, TestCase from .testsuite import TestSuite diff --git a/httprunner/schema/api.py b/httprunner/schema/api.py index 48f73e38..eb7c0b5e 100644 --- a/httprunner/schema/api.py +++ b/httprunner/schema/api.py @@ -1,3 +1,5 @@ +from typing import Dict, Text + from pydantic import BaseModel, Field from httprunner.schema import common @@ -10,5 +12,5 @@ class Api(BaseModel): base_url: common.BaseUrl = "" setup_hooks: common.Hook = [] teardown_hooks: common.Hook = [] - extract: common.Extract = {} + extract: Dict[Text, Text] = {} validation: common.Validate = Field([], alias="validate") diff --git a/httprunner/schema/common.py b/httprunner/schema/common.py index c146ca06..bc97e9ff 100644 --- a/httprunner/schema/common.py +++ b/httprunner/schema/common.py @@ -1,22 +1,21 @@ from enum import Enum -from typing import Dict, List, Any +from typing import Dict, List, Any, Text from pydantic import BaseModel, HttpUrl, Field -Name = str -Url = str +Name = Text +Url = Text BaseUrl = HttpUrl -Variables = Dict[str, Any] -Headers = Dict[str, str] +Variables = Dict[Text, Any] +Headers = Dict[Text, Text] Verify = bool -Hook = List[str] -Export = List[str] -Extract = Dict[str, str] +Hook = List[Text] +Export = List[Text] Validate = List[Dict] -Env = Dict[str, Any] +Env = Dict[Text, Any] -class MethodEnum(str, Enum): +class MethodEnum(Text, Enum): GET = 'GET' POST = 'POST' PUT = "PUT" @@ -52,10 +51,10 @@ class TestsConfig(BaseModel): class Request(BaseModel): method: MethodEnum = MethodEnum.GET url: Url - params: Dict[str, str] = {} + params: Dict[Text, Text] = {} headers: Headers = {} req_json: Dict = Field({}, alias="json") - cookies: Dict[str, str] = {} + cookies: Dict[Text, Text] = {} timeout: int = 120 allow_redirects: bool = True verify: Verify = False diff --git a/httprunner/schema/testcase.py b/httprunner/schema/testcase.py index 72d92287..c4aec71f 100644 --- a/httprunner/schema/testcase.py +++ b/httprunner/schema/testcase.py @@ -1,4 +1,4 @@ -from typing import Dict, List, Text +from typing import Dict, List, Text, Union from pydantic import BaseModel, Field @@ -13,9 +13,10 @@ class ProjectMeta(BaseModel): class TestStep(BaseModel): name: common.Name - api: str = None # TODO: replace with FilePath + api: Text = None # TODO: replace with FilePath + testcase: Text = None request: common.Request = None - extract: Dict[str, str] = {} + extract: Union[Dict[Text, Text], List[Text]] = {} validation: common.Validate = Field([], alias="validate") @@ -81,6 +82,3 @@ class TestCase(BaseModel): } ] } - - -TestCases = List[TestCase] diff --git a/httprunner/schema/testsuite.py b/httprunner/schema/testsuite.py index 841479fb..f973824a 100644 --- a/httprunner/schema/testsuite.py +++ b/httprunner/schema/testsuite.py @@ -1,8 +1,15 @@ -from typing import List +from typing import List, Text from pydantic import BaseModel -from httprunner.schema import common, TestCase +from httprunner.schema import common + + +class TestCase(BaseModel): + name: common.Name + testcase: Text + weight: int = 1 + variables: common.Variables = {} class TestSuite(BaseModel): diff --git a/tests/locust_tests/demo_locusts.yml b/tests/locust_tests/demo_locusts.yml index 62ab8d69..2ec2d342 100644 --- a/tests/locust_tests/demo_locusts.yml +++ b/tests/locust_tests/demo_locusts.yml @@ -1,7 +1,7 @@ config: name: create users with uid variables: - - device_sn: ${gen_random_string(15)} + device_sn: ${gen_random_string(15)} base_url: "http://127.0.0.1:5000" testcases: