def get_screenshot_img(file_id): """ 获取截屏图片 :param file_id: :return: 1.获取成功、2.找不到该文件、3.mongo连接不上 """ if is_null(file_id): msg = PARAMS_NOT_NONE img_base64 = "" else: mgf = MongoGridFS() img_base64 = mgf.get_base64_by_id(file_id) if is_null(img_base64): msg = MONGO_CONNECT_FAIL elif img_base64 == "no such file": msg = NO_SUCH_FILE else: msg = REQUEST_SUCCESS # response = make_response(img_base64) # response.headers.set('Content-Type', 'image/png') # return response re_dict = interface_template(msg, { "file_id": file_id, "img_base64": img_base64 }) return json.dumps(re_dict, ensure_ascii=False)
def run_case(pro_name): """ 同时执行不同的用例 (开启线程执行,直接返回接口结果) [ 备 注 ] 需要判断Android设备连接情况,若都未连接,表示不开启线程进行测试,并给出报错结果 :param pro_name: :return: """ if not pro_exist(pro_name): msg = PRO_NOT_EXIST else: # 获取已连接的设备列表 connected_android_device_list = get_connected_android_devices_info(pro_name) if is_null(connected_android_device_list): msg = ANDROID_DEVICES_NOT_CONNECT else: run_flag = is_exist_start_case(pro_name) if run_flag == "mongo error": msg = MONGO_CONNECT_FAIL else: if run_flag: msg = EXIST_RUNNING_CASE elif is_exist_online_case(pro_name): sync_run_case(pro_name, connected_android_device_list) msg = CASE_RUNING else: msg = NO_ONLINE_CASE result_dict = {"pro_name": pro_name} re_dict = interface_template(msg, result_dict) return json.dumps(re_dict, ensure_ascii=False)
def set_case_status_all(pro_name, case_status): """ 设置整个项目的'测试用例'的'状态'(上下线) :param pro_name: :param case_status: :return: """ test_method_name_list = [] if is_null(pro_name) or is_null(case_status): msg = PARAMS_NOT_NONE else: if case_status in [True, False, "false", "FALSE", "TRUE", "true"]: case_status = case_status in [True, "TRUE", "true" ] and True or False res = update_case_status_all(pro_name, case_status) if res == "mongo error": msg = MONGO_CONNECT_FAIL else: msg = UPDATE_SUCCESS test_method_name_list = res else: msg = REQUEST_ARGS_WRONG re_dict = interface_template( msg, { "pro_name": pro_name, "case_status": case_status, "test_method_name_list": test_method_name_list }) return json.dumps(re_dict, ensure_ascii=False)
def test_get_request(): params = request.args test_str = params.get("test_str") # str test_int = params.get("test_int") # str test_bool = params.get("test_bool") # str result_dict = {"test_str": test_str, "test_int": test_int, "test_bool": test_bool} msg = REQUEST_SUCCESS re_dict = interface_template(msg, result_dict) return json.dumps(re_dict, ensure_ascii=False)
def test_post_request(): params = request.json test_str = params.get("test_str") # str test_int = params.get("test_int") # int test_bool = params.get("test_bool") # str response_list = ["list_str", 5, True] response_dict = {"name": "Messi", "age": 32, "sex": True} response_list_dict = [{"name": "Henry", "age": 43}, {"name": "Ronaldo", "age": 40}] result_dict = {"test_str": test_str, "test_int": test_int, "test_bool": test_bool, "response_list": response_list, "response_dict": response_dict, "response_list_dict": response_list_dict} msg = SYNC_SUCCESS re_dict = interface_template(msg, result_dict) return json.dumps(re_dict, ensure_ascii=False)
def stop_run_status(pro_name): """ 强行修改用例运行状态 -> 停止 :param pro_name: :return: """ if is_null(pro_name): msg = PARAMS_NOT_NONE else: insert_result = stop_case_run_status(pro_name) if insert_result == "mongo error": msg = MONGO_CONNECT_FAIL else: msg = STOP_SUCCESS re_dict = interface_template(msg, {"pro_name": pro_name}) return json.dumps(re_dict, ensure_ascii=False)
def refresh_case_run_status(pro_name): """ 刷新用例运行状态 :param pro_name: :return: """ if is_null(pro_name): msg = PARAMS_NOT_NONE else: case_run_status_list = get_case_run_status(pro_name) if case_run_status_list == "mongo error": msg = MONGO_CONNECT_FAIL else: msg = REQUEST_SUCCESS re_dict = interface_template(msg, {"pro_name": pro_name, "case_run_status_list": case_run_status_list}) return json.dumps(re_dict, ensure_ascii=False)
def refresh_run_progress(pro_name): """ 刷新执行用例进度 :param pro_name: :return: """ if is_null(pro_name): msg = PARAMS_NOT_NONE else: progress_info = get_progress_info(pro_name) if progress_info == "mongo error": msg = MONGO_CONNECT_FAIL else: msg = REQUEST_SUCCESS re_dict = interface_template(msg, {"pro_name": pro_name, "progress_info": progress_info}) return json.dumps(re_dict, ensure_ascii=False)
def set_case_status(pro_name, test_method_name): """ 设置某个'测试用例'的'状态'(上下线) :param pro_name: :param test_method_name: :return: """ new_case_status = None if is_null(pro_name) or is_null(test_method_name): msg = PARAMS_NOT_NONE else: new_case_status = update_case_status(pro_name, test_method_name) msg = new_case_status == "mongo error" and MONGO_CONNECT_FAIL or UPDATE_SUCCESS re_dict = interface_template(msg, {"pro_name": pro_name, "test_method_name": test_method_name, "new_case_status": new_case_status}) return json.dumps(re_dict, ensure_ascii=False)
def sync_case_list(pro_name): """ 将某项目的所有测试用例同步入mongo库中,默认状态为'下线' :param pro_name: :return: """ if is_null(pro_name): msg = PARAMS_NOT_NONE else: insert_result = case_import_mongo(pro_name) if insert_result == "mongo error": msg = MONGO_CONNECT_FAIL elif insert_result == "no such pro": msg = NO_SUCH_PRO else: msg = SYNC_SUCCESS re_dict = interface_template(msg, {"pro_name": pro_name}) return json.dumps(re_dict, ensure_ascii=False)
def run_case(pro_name): """ 同时执行不同的用例 (开启线程执行,直接返回接口结果) :param pro_name: :return: """ if not pro_exist(pro_name): msg = PRO_NOT_EXIST else: run_flag = is_exist_start_case(pro_name) if run_flag == "mongo error": msg = MONGO_CONNECT_FAIL else: if run_flag: msg = EXIST_RUNNING_CASE elif is_exist_online_case(pro_name): sync_run_case(pro_name) msg = CASE_RUNING else: msg = NO_ONLINE_CASE result_dict = {"pro_name": pro_name} re_dict = interface_template(msg, result_dict) return json.dumps(re_dict, ensure_ascii=False)
def test_get_request_no_params(): result_dict = {"pro_name": "pro_demo_1", "browser_name": "Chrome"} msg = CASE_RUNING re_dict = interface_template(msg, result_dict) return json.dumps(re_dict, ensure_ascii=False)