def update_context_variables(self, variables, level): """ update context variables, with level specified. Args: variables (list/OrderedDict): testcase config block or teststep block [ {"TOKEN": "debugtalk"}, {"random": "${gen_random_string(5)}"}, {"json": {'name': 'user', 'password': '******'}}, {"md5": "${gen_md5($TOKEN, $json, $random)}"} ] OrderDict({ "TOKEN": "debugtalk", "random": "${gen_random_string(5)}", "json": {'name': 'user', 'password': '******'}, "md5": "${gen_md5($TOKEN, $json, $random)}" }) level (enum): "testcase" or "teststep" """ if isinstance(variables, list): variables = utils.convert_mappinglist_to_orderdict(variables) for variable_name, variable_value in variables.items(): variable_eval_value = self.eval_content(variable_value) if level == "testcase": self.testcase_runtime_variables_mapping[ variable_name] = variable_eval_value self.update_teststep_variables_mapping(variable_name, variable_eval_value)
def test_update_ordered_dict(self): map_list = [{"a": 1}, {"b": 2}] ordered_dict = utils.convert_mappinglist_to_orderdict(map_list) override_mapping = {"a": 3, "c": 4} new_dict = utils.update_ordered_dict(ordered_dict, override_mapping) self.assertEqual(3, new_dict["a"]) self.assertEqual(4, new_dict["c"])
def test_convert_to_order_dict(self): map_list = [ {"a": 1}, {"b": 2} ] ordered_dict = utils.convert_mappinglist_to_orderdict(map_list) self.assertIsInstance(ordered_dict, dict) self.assertIn("a", ordered_dict)
def __init__(self, variables=None, functions=None): """ init Context with testcase variables and functions. """ # testcase level context ## TESTCASE_SHARED_VARIABLES_MAPPING and TESTCASE_SHARED_FUNCTIONS_MAPPING are unchangeable. if isinstance(variables, list): self.TESTCASE_SHARED_VARIABLES_MAPPING = utils.convert_mappinglist_to_orderdict(variables) else: # dict self.TESTCASE_SHARED_VARIABLES_MAPPING = variables or OrderedDict() self.TESTCASE_SHARED_FUNCTIONS_MAPPING = functions or OrderedDict() # testcase level request, will not change self.TESTCASE_SHARED_REQUEST_MAPPING = {} self.evaluated_validators = [] self.init_context_variables(level="testcase")
def extract_response(self, extractors): """ extract value from requests.Response and store in OrderedDict. @param (list) extractors [ {"resp_status_code": "status_code"}, {"resp_headers_content_type": "headers.content-type"}, {"resp_content": "content"}, {"resp_content_person_first_name": "content.person.name.first_name"} ] @return (OrderDict) variable binds ordered dict """ if not extractors: return {} logger.log_info("start to extract from response object.") extracted_variables_mapping = OrderedDict() extract_binds_order_dict = utils.convert_mappinglist_to_orderdict(extractors) for key, field in extract_binds_order_dict.items(): extracted_variables_mapping[key] = self.extract_field(field) return extracted_variables_mapping