From 4d69342d40970fe643ce7d3b68e75f38b097c749 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 20 Jun 2017 20:24:38 +0800 Subject: [PATCH] parse_response_object: load response content as json format if possible --- ate/utils.py | 7 ++++++- test/api_server.py | 4 ++++ test/test_utils.py | 16 +++++++++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ate/utils.py b/ate/utils.py index e10a2586..f9519fc3 100644 --- a/ate/utils.py +++ b/ate/utils.py @@ -22,8 +22,13 @@ def load_testcases(testcase_file_path): raise ParamsError("Bad testcase file name!") def parse_response_object(resp_obj): + try: + resp_content = resp_obj.json() + except json.decoder.JSONDecodeError: + resp_content = resp_obj.text + return { 'status_code': resp_obj.status_code, 'headers': resp_obj.headers, - 'content': resp_obj.content + 'content': resp_content } diff --git a/test/api_server.py b/test/api_server.py index c980c5c1..c5c04187 100644 --- a/test/api_server.py +++ b/test/api_server.py @@ -19,6 +19,10 @@ data structure: """ users_dict = {} +@app.route('/') +def index(): + return "Hello World!" + @app.route('/api/users') def get_users(): users_list = [user for uid, user in users_dict.items()] diff --git a/test/test_utils.py b/test/test_utils.py index 0a87197b..871302d7 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -31,10 +31,24 @@ class TestUtils(ApiServerUnittest): self.assertIn('url', testcases[0]['request']) self.assertIn('method', testcases[0]['request']) - def test_parse_response_object(self): + def test_parse_response_object_json(self): url = "http://127.0.0.1:5000/api/users" resp_obj = requests.get(url) parse_result = utils.parse_response_object(resp_obj) self.assertIn('status_code', parse_result) self.assertIn('headers', parse_result) self.assertIn('content', parse_result) + self.assertIn('Content-Type', parse_result['headers']) + self.assertIn('Content-Length', parse_result['headers']) + self.assertIn('success', parse_result['content']) + + def test_parse_response_object_text(self): + url = "http://127.0.0.1:5000/" + resp_obj = requests.get(url) + parse_result = utils.parse_response_object(resp_obj) + self.assertIn('status_code', parse_result) + self.assertIn('headers', parse_result) + self.assertIn('content', parse_result) + self.assertIn('Content-Type', parse_result['headers']) + self.assertIn('Content-Length', parse_result['headers']) + self.assertTrue(str, type(parse_result['content']))