make extract in testcase template compatible with mapping style:

new mapping style:
    extract: {
        a: content.a,
        b: text.b
    }

    Also, the former list style is still valid:
    extract: [
        {a: content.a},
        {b: text.b}
    ]
This commit is contained in:
debugtalk
2018-11-29 14:43:09 +08:00
parent 41dc76eac0
commit 288efbbd18
5 changed files with 13 additions and 15 deletions

View File

@@ -296,7 +296,7 @@ def load_test(raw_testinfo):
"api": "api_add_cart", "api": "api_add_cart",
"variables": [], "variables": [],
"validate": [], "validate": [],
"extract": [] "extract": {}
} }
# testcase reference # testcase reference
{ {
@@ -310,7 +310,7 @@ def load_test(raw_testinfo):
"request": {}, "request": {},
"variables": [], "variables": [],
"validate": [], "validate": [],
"extract": [] "extract": {}
} }
Returns: Returns:

View File

@@ -566,14 +566,14 @@ def _extend_with_api(test_dict, api_def_dict):
} }
>>> test_dict = { >>> test_dict = {
"name": "get token 2", "name": "get token 2",
"extract": [{"token": "content.token"}], "extract": {"token": "content.token"},
"validate": [{'eq': ['status_code', 201]}, {'len_eq': ['content.token', 16]}] "validate": [{'eq': ['status_code', 201]}, {'len_eq': ['content.token', 16]}]
} }
>>> _extend_with_api(test_dict, api_def_dict) >>> _extend_with_api(test_dict, api_def_dict)
{ {
"name": "get token 2", "name": "get token 2",
"request": {...}, "request": {...},
"extract": [{"token": "content.token"}], "extract": {"token": "content.token"},
"validate": [{'eq': ['status_code', 201]}, {'len_eq': ['content.token', 16]}] "validate": [{'eq': ['status_code', 201]}, {'len_eq': ['content.token', 16]}]
} }
@@ -606,10 +606,10 @@ def _extend_with_api(test_dict, api_def_dict):
) )
# merge & override extractors # merge & override extractors
def_extrators = api_def_dict.pop("extract", []) def_extrators = api_def_dict.pop("extract", {})
test_dict["extract"] = utils.extend_variables( test_dict["extract"] = utils.extend_variables(
def_extrators, def_extrators,
test_dict.get("extract", []) test_dict.get("extract", {})
) )
# TODO: merge & override request # TODO: merge & override request

View File

@@ -169,7 +169,7 @@ class Runner(object):
}, },
"json": {"name": "user", "password": "123456"} "json": {"name": "user", "password": "123456"}
}, },
"extract": [], # optional "extract": {}, # optional
"validate": [], # optional "validate": [], # optional
"setup_hooks": [], # optional "setup_hooks": [], # optional
"teardown_hooks": [] # optional "teardown_hooks": [] # optional
@@ -238,7 +238,7 @@ class Runner(object):
self.do_hook_actions(teardown_hooks, "teardown") self.do_hook_actions(teardown_hooks, "teardown")
# extract # extract
extractors = test_dict.get("extract", []) extractors = test_dict.get("extract", {})
extracted_variables_mapping = resp_obj.extract_response(extractors) extracted_variables_mapping = resp_obj.extract_response(extractors)
self.session_context.update_seesion_variables(extracted_variables_mapping) self.session_context.update_seesion_variables(extracted_variables_mapping)

View File

@@ -20,11 +20,9 @@
{"expect_status_code": 200}, {"expect_status_code": 200},
{"token_len": 16} {"token_len": 16}
], ],
"extract": [ "extract": {
{ "token": "content.token"
"token": "content.token" },
}
],
"validate": [ "validate": [
{"check": "status_code", "comparator": "eq", "expect": 200}, {"check": "status_code", "comparator": "eq", "expect": 200},
{"eq": ["status_code", "$expect_status_code"]}, {"eq": ["status_code", "$expect_status_code"]},

View File

@@ -15,7 +15,7 @@
expect_status_code: 200 expect_status_code: 200
token_len: 16 token_len: 16
extract: extract:
- token: content.token token: content.token
validate: validate:
- {"check": "status_code", "comparator": "eq", "expect": 200} - {"check": "status_code", "comparator": "eq", "expect": 200}
- eq: ["status_code", $expect_status_code] - eq: ["status_code", $expect_status_code]
@@ -38,7 +38,7 @@
name: "user1" name: "user1"
password: "123456" password: "123456"
extract: extract:
- success: content.success success: content.success
validate: validate:
- eq: ["status_code", 201] - eq: ["status_code", 201]
- sum_status_code: ["status_code", 3] - sum_status_code: ["status_code", 3]