def test_getAdultCurbactList(self, test_case):
     # 初始化请求:执行前置接口+替换关联变量
     test_info, test_case = init_premise(test_case["test_info"], test_case, case_yaml)
     # 发送当前接口
     code, data = send_request(test_info, test_case)
     # 校验接口返回
     check_result(test_case, code, data)
 def test_template(self, test_case):
     # 初始化请求:执行前置接口+替换关联变量
     test_info, test_case = init_premise(case_data["test_info"], test_case,
                                         case_yaml)
     # 发送当前接口
     code, data = send_request(test_info, test_case)
     # 校验接口返回
     check_result(test_case, code, data)
def init_premise(test_info, case_data, case_path):
    """用例前提条件执行,提取关键值

    :param test_info: 测试信息
    :param case_data: 用例数据
    :param case_path: 用例路径
    :return:
    """
    # 获取项目公共关联值
    aconfig = readYaml.read_yaml_data(API_CONFIG)
    __relevance = aconfig[PROJECT_NAME]
    # 处理测试信息
    test_info = replaceRelevance.replace(test_info, __relevance)
    logging.debug("测试信息处理结果:{}".format(test_info))
    # 处理Cookies
    if test_info['cookies']:
        cookies = aconfig[PROJECT_NAME]['cookies']
        logging.debug("请求Cookies处理结果:{}".format(cookies))

    # 判断是否存在前置接口
    pre_case_path = test_info["premise"]
    if pre_case_path:
        # 获取前置接口用例
        logging.info("获取前置接口测试用例:{}".format(pre_case_path))
        pre_case_yaml = PAGE_DIR + pre_case_path
        pre_case_path = os.path.dirname(pre_case_yaml)
        pre_case_dict = readYaml.read_yaml_data(pre_case_yaml)
        pre_test_info = pre_case_dict['test_info']
        pre_case_data = pre_case_dict['test_case'][0]
        # 判断前置接口是否也存在前置接口
        if pre_test_info["premise"]:
            init_premise(pre_test_info, pre_case_data, pre_case_path)

        for i in range(3):
            # 处理前置接口测试信息
            pre_test_info = replaceRelevance.replace(pre_test_info,
                                                     __relevance)
            logging.debug("测试信息处理结果:{}".format(pre_test_info))
            # 处理前置接口Cookies
            if pre_test_info['cookies']:
                cookies = aconfig[PROJECT_NAME]['cookies']
                logging.debug("请求Cookies处理结果:{}".format(cookies))
            # 处理前置接口入参:获取入参-替换关联值-发送请求
            pre_parameter = read_json(pre_case_data['summary'],
                                      pre_case_data['parameter'],
                                      pre_case_path)
            pre_parameter = replaceRelevance.replace(pre_parameter,
                                                     __relevance)
            pre_case_data['parameter'] = pre_parameter
            logging.debug("请求参数处理结果:{}".format(pre_parameter))
            logging.info("执行前置接口测试用例:{}".format(pre_test_info))
            code, data = apiSend.send_request(pre_test_info, pre_case_data)

            # 检查接口是否调用成功
            if data:
                # 处理当前接口入参:获取入参-获取关联值-替换关联值
                parameter = read_json(case_data['summary'],
                                      case_data['parameter'], case_path)
                __relevance = readRelevance.get_relevance(
                    data, parameter, __relevance)
                parameter = replaceRelevance.replace(parameter, __relevance)
                case_data['parameter'] = parameter
                logging.debug("请求参数处理结果:{}".format(parameter))

                # 获取当前接口期望结果:获取期望结果-获取关联值-替换关联值
                expected_rs = read_json(
                    case_data['summary'],
                    case_data['check_body']['expected_result'], case_path)
                parameter['data'] = data
                __relevance = readRelevance.get_relevance(
                    parameter, expected_rs, __relevance)
                expected_rs = replaceRelevance.replace(expected_rs,
                                                       __relevance)
                case_data['check_body']['expected_result'] = expected_rs
                logging.debug("期望返回处理结果:{}".format(case_data))
                break
            else:
                time.sleep(1)
                logging.error("前置接口请求失败!等待1秒后重试!")
        else:
            logging.info("前置接口请求失败!尝试三次失败!")
            raise Exception("获取前置接口关联数据失败!")
    else:
        # 处理当前接口入参:获取入参-获取关联值-替换关联值
        parameter = read_json(case_data['summary'], case_data['parameter'],
                              case_path)
        parameter = replaceRelevance.replace(parameter, __relevance)
        case_data['parameter'] = parameter
        logging.debug("请求参数处理结果:{}".format(parameter))

        # 获取当前接口期望结果:获取期望结果-获取关联值-替换关联值
        expected_rs = read_json(case_data['summary'],
                                case_data['check_body']['expected_result'],
                                case_path)
        __relevance = readRelevance.get_relevance(parameter, expected_rs,
                                                  __relevance)
        expected_rs = replaceRelevance.replace(expected_rs, __relevance)
        case_data['check_body']['expected_result'] = expected_rs
        logging.debug("期望返回处理结果:{}".format(case_data))

    return test_info, case_data