1 | requests.request(method, url, **kwargs) |
1 2 3 4 5 6 7 8 9 10 11 12 | def test_create_user_not_existed(self): self.clear_users() url = "%s/api/users/%d" % (self.host, 1000) data = { "name": "user1", "password": "123456" } resp = self.api_client.post(url, json=data) self.assertEqual(201, resp.status_code) self.assertEqual(True, resp.json()["success"]) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | { "name": "create user which does not exist", "request": { "url": "http://127.0.0.1:5000/api/users/1000", "method": "POST", "headers": { "content-type": "application/json" }, "json": { "name": "user1", "password": "123456" } }, "response": { "status_code": 201, "headers": { "Content-Type": "application/json" }, "body": { "success": true, "msg": "user created successfully." } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | def run_single_testcase(testcase): req_kwargs = testcase['request'] try: url = req_kwargs.pop('url') method = req_kwargs.pop('method') except KeyError: raise exception.ParamsError("Params Error") resp_obj = requests.request(url=url, method=method, **req_kwargs) diff_content = utils.diff_response(resp_obj, testcase['response']) success = False if diff_content else True return success, diff_content |
1 2 3 4 5 6 7 8 9 10 11 | { "url": "http://127.0.0.1:5000/api/users/1000", "method": "POST", "headers": { "content-type": "application/json" }, "json": { "name": "user1", "password": "123456" } } |
1 | requests.request(url=url, method=method, **req_kwargs) |
1 | utils.diff_response(resp_obj, testcase['response']) |
1 2 3 4 5 | def test_run_single_testcase_success(self): testcase_file_path = os.path.join(os.getcwd(), 'test/data/demo.json') testcases = utils.load_testcases(testcase_file_path) success, _ = self.test_runner.run_single_testcase(testcases[0]) self.assertTrue(success) |
1 2 3 4 5 6 7 8 9 | def diff_response(resp_obj, expected_resp_json) diff_content = {} resp_info = parse_response_object(resp_obj) # 对比 status_code,将差异存入 diff_content # 对比 Headers,将差异存入 diff_content # 对比 Body,将差异存入 diff_content return diff_content |
1 2 3 4 5 6 7 8 9 10 11 | def parse_response_object(resp_obj): try: resp_body = resp_obj.json() except ValueError: resp_body = resp_obj.text return { 'status_code': resp_obj.status_code, 'headers': resp_obj.headers, 'body': resp_body } |
1 2 3 4 5 6 7 8 9 10 11 12 | def diff_json(current_json, expected_json): json_diff = {} for key, expected_value in expected_json.items(): value = current_json.get(key, None) if str(value) != str(expected_value): json_diff[key] = { 'value': value, 'expected': expected_value } return json_diff |
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |