mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 23:51:25 +08:00
refactor: StepValidation
This commit is contained in:
@@ -15,13 +15,13 @@ class TestCaseRequestWithFunctions(HttpRunner):
|
|||||||
teststeps = [
|
teststeps = [
|
||||||
Step("get with params")
|
Step("get with params")
|
||||||
.with_variables(foo1="bar1", foo2="session_bar2", sum_v="${sum_two(1, 2)}")
|
.with_variables(foo1="bar1", foo2="session_bar2", sum_v="${sum_two(1, 2)}")
|
||||||
|
.set_extractor("session_foo2", "body.args.foo2")
|
||||||
.run_request(
|
.run_request(
|
||||||
Request()
|
Request()
|
||||||
.get("/get")
|
.get("/get")
|
||||||
.with_params(foo1="$foo1", foo2="$foo2", sum_v="$sum_v")
|
.with_params(foo1="$foo1", foo2="$foo2", sum_v="$sum_v")
|
||||||
.with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
|
.with_headers(**{"User-Agent": "HttpRunner/${get_httprunner_version()}"})
|
||||||
)
|
)
|
||||||
.extract("session_foo2", "body.args.foo2")
|
|
||||||
.assert_equal("status_code", 200)
|
.assert_equal("status_code", 200)
|
||||||
.assert_equal("body.args.foo1", "session_bar1")
|
.assert_equal("body.args.foo1", "session_bar1")
|
||||||
.assert_equal("body.args.sum_v", "3")
|
.assert_equal("body.args.sum_v", "3")
|
||||||
|
|||||||
+38
-22
@@ -1,5 +1,5 @@
|
|||||||
import inspect
|
import inspect
|
||||||
from typing import Text, Any
|
from typing import Text, Any, Dict
|
||||||
|
|
||||||
from httprunner.schema import (
|
from httprunner.schema import (
|
||||||
TConfig,
|
TConfig,
|
||||||
@@ -126,39 +126,33 @@ class Request(object):
|
|||||||
return RequestWithOptionalArgs(MethodEnum.PATCH, url)
|
return RequestWithOptionalArgs(MethodEnum.PATCH, url)
|
||||||
|
|
||||||
|
|
||||||
class Step(object):
|
class StepValidation(object):
|
||||||
def __init__(self, name: Text):
|
def __init__(
|
||||||
|
self, name: Text, variables: Dict, extractors: Dict, request: TRequest
|
||||||
|
):
|
||||||
self.__name = name
|
self.__name = name
|
||||||
self.__variables = {}
|
self.__variables = variables
|
||||||
self.__request = None
|
self.__extractors = extractors
|
||||||
self.__extract = {}
|
self.__request = request
|
||||||
self.__validators = []
|
self.__validators = []
|
||||||
|
|
||||||
def with_variables(self, **variables) -> "Step":
|
|
||||||
self.__variables.update(variables)
|
|
||||||
return self
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def request(self) -> TRequest:
|
def request(self) -> TRequest:
|
||||||
return self.__request
|
return self.__request
|
||||||
|
|
||||||
def run_request(self, req_obj: RequestWithOptionalArgs) -> "Step":
|
def assert_equal(self, jmes_path: Text, expected_value: Any) -> "StepValidation":
|
||||||
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]})
|
self.__validators.append({"eq": [jmes_path, expected_value]})
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def assert_greater_than(self, jmes_path: Text, expected_value: Any) -> "Step":
|
def assert_greater_than(
|
||||||
|
self, jmes_path: Text, expected_value: Any
|
||||||
|
) -> "StepValidation":
|
||||||
self.__validators.append({"gt": [jmes_path, expected_value]})
|
self.__validators.append({"gt": [jmes_path, expected_value]})
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def assert_less_than(self, jmes_path: Text, expected_value: Any) -> "Step":
|
def assert_less_than(
|
||||||
|
self, jmes_path: Text, expected_value: Any
|
||||||
|
) -> "StepValidation":
|
||||||
self.__validators.append({"lt": [jmes_path, expected_value]})
|
self.__validators.append({"lt": [jmes_path, expected_value]})
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@@ -167,6 +161,28 @@ class Step(object):
|
|||||||
name=self.__name,
|
name=self.__name,
|
||||||
variables=self.__variables,
|
variables=self.__variables,
|
||||||
request=self.__request,
|
request=self.__request,
|
||||||
extract=self.__extract,
|
extract=self.__extractors,
|
||||||
validate=self.__validators,
|
validate=self.__validators,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Step(object):
|
||||||
|
def __init__(self, name: Text):
|
||||||
|
self.__name = name
|
||||||
|
self.__variables = {}
|
||||||
|
self.__extractors = {}
|
||||||
|
self.__request = None
|
||||||
|
|
||||||
|
def with_variables(self, **variables) -> "Step":
|
||||||
|
self.__variables.update(variables)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def set_extractor(self, var_name: Text, jmes_path: Text) -> "Step":
|
||||||
|
self.__extractors[var_name] = jmes_path
|
||||||
|
return self
|
||||||
|
|
||||||
|
def run_request(self, req_obj: RequestWithOptionalArgs) -> "StepValidation":
|
||||||
|
self.__request = req_obj.perform()
|
||||||
|
return StepValidation(
|
||||||
|
self.__name, self.__variables, self.__extractors, self.__request
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user