refactor: relocate testcase definitions

This commit is contained in:
debugtalk
2020-06-01 13:17:44 +08:00
parent 03c1836075
commit 0905350e99
3 changed files with 165 additions and 157 deletions

View File

@@ -1,8 +1,9 @@
__version__ = "3.0.7" __version__ = "3.0.7"
__description__ = "One-stop solution for HTTP(S) testing." __description__ = "One-stop solution for HTTP(S) testing."
from httprunner.runner import HttpRunner, Config, Step, Request from httprunner.runner import HttpRunner
from httprunner.schema import TConfig, TStep from httprunner.schema import TConfig, TStep
from httprunner.testcase import Config, Step, Request
__all__ = [ __all__ = [
"__version__", "__version__",

View File

@@ -2,7 +2,7 @@ import os
import time import time
import uuid import uuid
from datetime import datetime from datetime import datetime
from typing import List, Dict, Text, Any, NoReturn from typing import List, Dict, Text, NoReturn
try: try:
import allure import allure
@@ -30,161 +30,6 @@ from httprunner.schema import (
TestCaseInOut, TestCaseInOut,
ProjectMeta, ProjectMeta,
TestCase, TestCase,
TRequest,
MethodEnum,
)
class Config(object):
def __init__(self, name: Text):
self.__name = name
self.__variables = {}
self.__base_url = ""
self.__verify = False
self.__path = ""
def variables(self, **variables) -> "Config":
self.__variables.update(variables)
return self
def base_url(self, base_url: Text) -> "Config":
self.__base_url = base_url
return self
def verify(self, verify: bool) -> "Config":
self.__verify = verify
return self
def path(self, path: Text) -> "Config":
self.__path = path
return self
def init(self) -> TConfig:
return TConfig(
name=self.__name,
base_url=self.__base_url,
verify=self.__verify,
variables=self.__variables,
path=self.__path,
)
class RequestOptionalArgs(object):
def __init__(self, method: MethodEnum, url: Text):
self.__method = method
self.__url = url
self.__params = {}
self.__headers = {}
self.__cookies = {}
self.__data = ""
self.__timeout = 120
self.__allow_redirects = True
self.__verify = False
def with_params(self, **params) -> "RequestOptionalArgs":
self.__params.update(params)
return self
def with_headers(self, **headers) -> "RequestOptionalArgs":
self.__headers.update(headers)
return self
def with_cookies(self, **cookies) -> "RequestOptionalArgs":
self.__cookies.update(cookies)
return self
def with_data(self, data) -> "RequestOptionalArgs":
self.__data = data
return self
def set_timeout(self, timeout: float) -> "RequestOptionalArgs":
self.__timeout = timeout
return self
def set_verify(self, verify: bool) -> "RequestOptionalArgs":
self.__verify = verify
return self
def set_allow_redirects(self, allow_redirects: bool) -> "RequestOptionalArgs":
self.__allow_redirects = allow_redirects
return self
def perform(self) -> TRequest:
"""build TRequest object with configs"""
return TRequest(
method=self.__method,
url=self.__url,
params=self.__params,
headers=self.__headers,
data=self.__data,
timeout=self.__timeout,
verify=self.__verify,
allow_redirects=self.__allow_redirects,
)
class Request(object):
def get(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.GET, url)
def post(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.POST, url)
def put(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.PUT, url)
def head(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.HEAD, url)
def delete(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.DELETE, url)
def options(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.OPTIONS, url)
def patch(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.PATCH, url)
class Step(object):
def __init__(self, name):
self.__name = name
self.__variables = {}
self.__request = None
self.__extract = {}
self.__validators = []
def with_variables(self, **variables) -> "Step":
self.__variables.update(variables)
return self
def run_request(self, req_obj: RequestOptionalArgs) -> "Step":
self.__request = req_obj.perform()
return self
def extract(self, var_name: Text, jmes_path: Text) -> "Step":
self.__extract[var_name] = jmes_path
return self
def assert_equal(self, jmes_path: Text, expected_value: Any) -> "Step":
self.__validators.append({"eq": [jmes_path, expected_value]})
return self
def assert_greater_than(self, jmes_path: Text, expected_value: Any) -> "Step":
self.__validators.append({"gt": [jmes_path, expected_value]})
return self
def assert_less_than(self, jmes_path: Text, expected_value: Any) -> "Step":
self.__validators.append({"lt": [jmes_path, expected_value]})
return self
def init(self) -> TStep:
return TStep(
name=self.__name,
variables=self.__variables,
request=self.__request,
extract=self.__extract,
validate=self.__validators,
) )

162
httprunner/testcase.py Normal file
View File

@@ -0,0 +1,162 @@
from typing import Text, Any
from httprunner.schema import (
TConfig,
TStep,
TRequest,
MethodEnum,
)
class Config(object):
def __init__(self, name: Text):
self.__name = name
self.__variables = {}
self.__base_url = ""
self.__verify = False
self.__path = ""
def variables(self, **variables) -> "Config":
self.__variables.update(variables)
return self
def base_url(self, base_url: Text) -> "Config":
self.__base_url = base_url
return self
def verify(self, verify: bool) -> "Config":
self.__verify = verify
return self
def path(self, path: Text) -> "Config":
self.__path = path
return self
def init(self) -> TConfig:
return TConfig(
name=self.__name,
base_url=self.__base_url,
verify=self.__verify,
variables=self.__variables,
path=self.__path,
)
class RequestOptionalArgs(object):
def __init__(self, method: MethodEnum, url: Text):
self.__method = method
self.__url = url
self.__params = {}
self.__headers = {}
self.__cookies = {}
self.__data = ""
self.__timeout = 120
self.__allow_redirects = True
self.__verify = False
def with_params(self, **params) -> "RequestOptionalArgs":
self.__params.update(params)
return self
def with_headers(self, **headers) -> "RequestOptionalArgs":
self.__headers.update(headers)
return self
def with_cookies(self, **cookies) -> "RequestOptionalArgs":
self.__cookies.update(cookies)
return self
def with_data(self, data) -> "RequestOptionalArgs":
self.__data = data
return self
def set_timeout(self, timeout: float) -> "RequestOptionalArgs":
self.__timeout = timeout
return self
def set_verify(self, verify: bool) -> "RequestOptionalArgs":
self.__verify = verify
return self
def set_allow_redirects(self, allow_redirects: bool) -> "RequestOptionalArgs":
self.__allow_redirects = allow_redirects
return self
def perform(self) -> TRequest:
"""build TRequest object with configs"""
return TRequest(
method=self.__method,
url=self.__url,
params=self.__params,
headers=self.__headers,
data=self.__data,
timeout=self.__timeout,
verify=self.__verify,
allow_redirects=self.__allow_redirects,
)
class Request(object):
def get(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.GET, url)
def post(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.POST, url)
def put(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.PUT, url)
def head(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.HEAD, url)
def delete(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.DELETE, url)
def options(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.OPTIONS, url)
def patch(self, url: Text) -> RequestOptionalArgs:
return RequestOptionalArgs(MethodEnum.PATCH, url)
class Step(object):
def __init__(self, name):
self.__name = name
self.__variables = {}
self.__request = None
self.__extract = {}
self.__validators = []
def with_variables(self, **variables) -> "Step":
self.__variables.update(variables)
return self
def run_request(self, req_obj: RequestOptionalArgs) -> "Step":
self.__request = req_obj.perform()
return self
def extract(self, var_name: Text, jmes_path: Text) -> "Step":
self.__extract[var_name] = jmes_path
return self
def assert_equal(self, jmes_path: Text, expected_value: Any) -> "Step":
self.__validators.append({"eq": [jmes_path, expected_value]})
return self
def assert_greater_than(self, jmes_path: Text, expected_value: Any) -> "Step":
self.__validators.append({"gt": [jmes_path, expected_value]})
return self
def assert_less_than(self, jmes_path: Text, expected_value: Any) -> "Step":
self.__validators.append({"lt": [jmes_path, expected_value]})
return self
def init(self) -> TStep:
return TStep(
name=self.__name,
variables=self.__variables,
request=self.__request,
extract=self.__extract,
validate=self.__validators,
)