Best Python code snippet using tavern
response.py
Source:response.py
...30 if self.response:31 return self.response.text.strip()32 else:33 return "<Not run yet>"34 def _verbose_log_response(self, response):35 """Verbosely log the response object, with query params etc."""36 logger.info("Response: '%s'", response)37 def log_dict_block(block, name):38 if block:39 to_log = name + ":"40 if isinstance(block, list):41 for v in block:42 to_log += "\n - {}".format(v)43 elif isinstance(block, dict):44 for k, v in block.items():45 to_log += "\n {}: {}".format(k, v)46 else:47 to_log += "\n {}".format(block)48 logger.debug(to_log)49 log_dict_block(response.headers, "Headers")50 try:51 log_dict_block(response.json(), "Body")52 except ValueError:53 pass54 redirect_query_params = self._get_redirect_query_params(response)55 if redirect_query_params:56 parsed_url = urlparse(response.headers["location"])57 to_path = "{0}://{1}{2}".format(*parsed_url)58 logger.debug("Redirect location: %s", to_path)59 log_dict_block(redirect_query_params, "Redirect URL query parameters")60 def _get_redirect_query_params(self, response):61 """If there was a redirect header, get any query parameters from it"""62 try:63 redirect_url = response.headers["location"]64 except KeyError as e:65 if "redirect_query_params" in self.expected.get("save", {}):66 self._adderr(67 "Wanted to save %s, but there was no redirect url in response",68 self.expected["save"]["redirect_query_params"],69 e=e,70 )71 redirect_query_params = {}72 else:73 parsed = urlparse(redirect_url)74 qp = parsed.query75 redirect_query_params = {i: j[0] for i, j in parse_qs(qp).items()}76 return redirect_query_params77 def _check_status_code(self, status_code, body):78 expected_code = self.expected["status_code"]79 if (isinstance(expected_code, int) and status_code == expected_code) or (80 isinstance(expected_code, list) and (status_code in expected_code)81 ):82 logger.debug(83 "Status code '%s' matched expected '%s'", status_code, expected_code84 )85 return86 else:87 if 400 <= status_code < 500:88 # special case if there was a bad request. This assumes that the89 # response would contain some kind of information as to why this90 # request was rejected.91 self._adderr(92 "Status code was %s, expected %s:\n%s",93 status_code,94 expected_code,95 indent_err_text(json.dumps(body)),96 )97 else:98 self._adderr(99 "Status code was %s, expected %s", status_code, expected_code100 )101 def verify(self, response):102 """Verify response against expected values and returns any values that103 we wanted to save for use in future requests104 There are various ways to 'validate' a block - a specific function, just105 matching values, validating a schema, etc...106 Args:107 response (requests.Response): response object108 Returns:109 dict: Any saved values110 Raises:111 TestFailError: Something went wrong with validating the response112 """113 self._verbose_log_response(response)114 call_hook(115 self.test_block_config,116 "pytest_tavern_beta_after_every_response",117 expected=self.expected,118 response=response,119 )120 self.response = response121 self.status_code = response.status_code122 # Get things to use from the response123 try:124 body = response.json()125 except ValueError:126 body = None127 redirect_query_params = self._get_redirect_query_params(response)...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!