def parse(self, response): """Parse WebTest response. :param response: WebTest response object """ content_type = '' for k, v in response.headers.iteritems(): if k == 'Content-Type': content_type = v status = response.status_code params = '' response_body = '' if to_unicode(response.body) != '': response_body = json.dumps(response.json_body, indent=2) request = response.request if to_unicode(request.body) != '': params = json.dumps(request.json_body, indent=2) ret = { 'status_code': status, 'response_content_type': content_type, 'response_body': response_body, 'target_url': '{0}://{1}'.format(request.scheme, request.host), 'request': '{0} {1}'.format(request.method, request.path_info), 'params': params } return ret
def create_document(self, output): """Read template file and render file. :param output: Output file path. """ if not os.path.exists(self.template_path): raise IOError('Template file not found.') documents = [] with open(self.template_path, 'rb') as f: data = f.read() template = Template(to_unicode(data)) indent_targets = ['params', 'response_body'] for v in self.vars: if self.template_path.endswith('.rst'): for k in indent_targets: lines = v[k].split('\n') ret = [] for i, l in enumerate(lines): if i > 0: ret.append(' {0}'.format(l).rstrip()) else: ret.append(l) v[k] = '\n'.join(ret) document = template.substitute(v) documents.append(document) with open(output, 'w') as f: f.write('\n'.join(documents))
def parse(self, response): """Parse requests response. :param response: requests response object """ content_type = response.headers['Content-Type'] status = response.status_code params = '' response_body = '' if to_unicode(response.content) != '': response_body = json.loads(to_unicode(response.content)) #: Format indent. #: {'foo': 'bar'} #: will format to #: { #: 'foo': 'bar' #: } response_body = json.dumps(response_body, indent=2) request = response.request if request.body != '': data = parse_qsl(request.body) request_params = {} for v in data: #: v[0] = parameter key #: v[1] = parameter value #: ex: #: user_id=foo&email=foo%40example.com #: v[0] = user_id #: v[1] = foo request_params[v[0]] = v[1] params = json.dumps(request_params, indent=2) ret = { 'status_code': status, 'response_content_type': content_type, 'response_body': response_body, 'target_url': request.url, 'request': '{0} {1}'.format(request.method, request.path_url), 'params': params } return ret