diff --git a/README.md b/README.md index 95b812d5..9a8f7d8b 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ And here is testset example of typical scenario: get `token` at the beginning, a app_version: $app_version json: sign: ${get_sign($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/ate/response.py b/ate/response.py index 0b4c17a9..933ae25b 100644 --- a/ate/response.py +++ b/ate/response.py @@ -56,9 +56,9 @@ class ResponseObject(object): except AttributeError: raise exception.ParseResponseError("failed to extract bind variable in response!") - def extract_response(self, extract_binds): + def extract_response(self, extractors): """ extract content from requests.Response - @param (list) extract_binds + @param (list) extractors [ {"resp_status_code": "status_code"}, {"resp_headers_content_type": "headers.content-type"}, @@ -68,11 +68,11 @@ class ResponseObject(object): @return (OrderDict) variable binds ordered dict """ extracted_variables_mapping = OrderedDict() - extract_binds_order_dict = utils.convert_to_order_dict(extract_binds) + extract_binds_order_dict = utils.convert_to_order_dict(extractors) for key, field in extract_binds_order_dict.items(): if not isinstance(field, utils.string_type): - raise exception.ParamsError("invalid extract_binds in testcase extract_binds!") + raise exception.ParamsError("invalid extractors in testcase!") extracted_variables_mapping[key] = self.extract_field(field) diff --git a/ate/runner.py b/ate/runner.py index a19a5a44..bd44e62f 100644 --- a/ate/runner.py +++ b/ate/runner.py @@ -84,7 +84,7 @@ class Runner(object): }, "body": '{"name": "user", "password": "123456"}' }, - "extract_binds": [], # optional + "extractors": [], # optional "validators": [], # optional "setup": [], # optional "teardown": [] # optional @@ -100,7 +100,9 @@ class Runner(object): raise exception.ParamsError("URL or METHOD missed!") run_times = int(testcase.get("times", 1)) - extract_binds = testcase.get("extract_binds", []) + extractors = testcase.get("extractors") \ + or testcase.get("extractor") \ + or testcase.get("extract_binds", []) validators = testcase.get("validators", []) setup_actions = testcase.get("setup", []) teardown_actions = testcase.get("teardown", []) @@ -115,7 +117,7 @@ class Runner(object): resp = self.http_client_session.request(url=url, method=method, **parsed_request) resp_obj = response.ResponseObject(resp) - extracted_variables_mapping = resp_obj.extract_response(extract_binds) + extracted_variables_mapping = resp_obj.extract_response(extractors) self.context.bind_variables(extracted_variables_mapping, level="testset") resp_obj.validate(validators, self.context.get_testcase_variables_mapping()) @@ -142,7 +144,7 @@ class Runner(object): "name": "testcase description", "variable_binds": [], # optional, override "request": {}, - "extract_binds": {}, # optional + "extractors": {}, # optional "validators": {} # optional }, testcase12 diff --git a/docs/extraction-and-validation.md b/docs/extraction-and-validation.md index 798ed9c4..0cb76fc0 100644 --- a/docs/extraction-and-validation.md +++ b/docs/extraction-and-validation.md @@ -24,7 +24,7 @@ Suppose we get the following HTTP response. } ``` -In `extract_binds` and `validators`, we can do chain operation to extract data field in HTTP response. +In `extractors` and `validators`, we can do chain operation to extract data field in HTTP response. For instance, if we want to get `Content-Type` in response headers, then we can specify `headers.content-type`; if we want to get `first_name` in response content, we can specify `content.person.name.first_name`. @@ -46,7 +46,7 @@ content.person.cities.1 ``` ```yaml -extract_binds: +extractors: - content_type: headers.content-type - first_name: content.person.name.first_name validators: diff --git a/docs/quickstart.md b/docs/quickstart.md index 59f58cd2..500e7496 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -120,7 +120,7 @@ To fix this problem, we should correlate `token` field in the second API test ca app_version: 2.8.6 json: sign: 19067cf712265eb5426db8d3664026c1ccea02b9 - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} @@ -142,7 +142,7 @@ To fix this problem, we should correlate `token` field in the second API test ca - {"check": "content.success", "comparator": "eq", "expected": true} ``` -As you see, the `token` field is no longer hardcoded, instead it is extracted from the first API request with `extract_binds` mechanism. In the meanwhile, it is assigned to `token` variable, which can be referenced by the subsequent API requests. +As you see, the `token` field is no longer hardcoded, instead it is extracted from the first API request with `extractors` mechanism. In the meanwhile, it is assigned to `token` variable, which can be referenced by the subsequent API requests. Now we save the test cases to [`quickstart-demo-rev-1.yml`][quickstart-demo-rev-1] and rerun it, and we will find that both API requests to be successful. @@ -202,7 +202,7 @@ And then, we can revise our demo test case and reference the functions. Suppose app_version: $app_version json: sign: ${get_sign($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} @@ -266,7 +266,7 @@ To handle this case, overall `config` block is supported in `ApiTestEngine`. If app_version: $app_version json: sign: ${get_sign($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/examples/quickstart-demo-rev-1.yml b/examples/quickstart-demo-rev-1.yml index 017a2015..d203cf8a 100644 --- a/examples/quickstart-demo-rev-1.yml +++ b/examples/quickstart-demo-rev-1.yml @@ -10,7 +10,7 @@ app_version: 2.8.6 json: sign: 19067cf712265eb5426db8d3664026c1ccea02b9 - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/examples/quickstart-demo-rev-2.yml b/examples/quickstart-demo-rev-2.yml index 100bf942..540a4ad3 100644 --- a/examples/quickstart-demo-rev-2.yml +++ b/examples/quickstart-demo-rev-2.yml @@ -15,7 +15,7 @@ app_version: $app_version json: sign: ${get_sign($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/examples/quickstart-demo-rev-3.yml b/examples/quickstart-demo-rev-3.yml index 30064ed5..44c3bbbf 100644 --- a/examples/quickstart-demo-rev-3.yml +++ b/examples/quickstart-demo-rev-3.yml @@ -22,7 +22,7 @@ app_version: $app_version json: sign: ${get_sign($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/tests/data/demo_testset_hardcode.json b/tests/data/demo_testset_hardcode.json index 75c84f28..bd154933 100644 --- a/tests/data/demo_testset_hardcode.json +++ b/tests/data/demo_testset_hardcode.json @@ -16,7 +16,7 @@ "sign": "f1219719911caae89ccc301679857ebfda115ca2" } }, - "extract_binds": [ + "extractors": [ { "token": "content.token" } diff --git a/tests/data/demo_testset_hardcode.yml b/tests/data/demo_testset_hardcode.yml index 204fab59..2b112e36 100644 --- a/tests/data/demo_testset_hardcode.yml +++ b/tests/data/demo_testset_hardcode.yml @@ -11,7 +11,7 @@ app_version: '2.8.6' json: sign: f1219719911caae89ccc301679857ebfda115ca2 - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/tests/data/demo_testset_layer.yml b/tests/data/demo_testset_layer.yml index f47a31cf..ba22272f 100644 --- a/tests/data/demo_testset_layer.yml +++ b/tests/data/demo_testset_layer.yml @@ -16,7 +16,7 @@ - test: name: get token api: get_token($user_agent, $device_sn, $os_platform, $app_version) - extract_binds: + extractors: - token: content.token - test: diff --git a/tests/data/demo_testset_template_import_functions.yml b/tests/data/demo_testset_template_import_functions.yml index 6531a497..28ffdbb7 100644 --- a/tests/data/demo_testset_template_import_functions.yml +++ b/tests/data/demo_testset_template_import_functions.yml @@ -25,7 +25,7 @@ app_version: $app_version json: sign: ${get_sign($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/tests/data/demo_testset_template_lambda_functions.yml b/tests/data/demo_testset_template_lambda_functions.yml index df2e98aa..26d5eecf 100644 --- a/tests/data/demo_testset_template_lambda_functions.yml +++ b/tests/data/demo_testset_template_lambda_functions.yml @@ -35,7 +35,7 @@ app_version: $app_version json: sign: ${get_sign_lambda($user_agent, $device_sn, $os_platform, $app_version)} - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/tests/data/demo_testset_variables.yml b/tests/data/demo_testset_variables.yml index 7a62e6ab..98dd3d16 100644 --- a/tests/data/demo_testset_variables.yml +++ b/tests/data/demo_testset_variables.yml @@ -26,7 +26,7 @@ app_version: $app_version json: sign: $sign - extract_binds: + extractors: - token: content.token validators: - {"check": "status_code", "comparator": "eq", "expected": 200} diff --git a/tests/test_runner.py b/tests/test_runner.py index dc8495eb..9996d25a 100644 --- a/tests/test_runner.py +++ b/tests/test_runner.py @@ -53,7 +53,7 @@ class TestRunner(ApiServerUnittest): "sign": "f1219719911caae89ccc301679857ebfda115ca2" } }, - "extract_binds": [ + "extractors": [ {"token": "content.token"} ], "validators": [