def upload_file_logic(files, project, module, account): """ 解析yaml或者json用例 :param files: :param project: :param module: :param account: :return: """ for file in files: file_suffix = os.path.splitext(file)[1].lower() if file_suffix == '.json': with io.open(file, encoding='utf-8') as data_file: try: content = json.load(data_file) except JSONDecodeError: err_msg = u"JSONDecodeError: JSON file format error: {}".format( file) logging.error(err_msg) elif file_suffix in ['.yaml', '.yml']: with io.open(file, 'r', encoding='utf-8') as stream: content = yaml.load(stream) for test_case in content: test_dict = { 'project': project, 'module': module, 'author': account, 'include': [] } if 'config' in test_case.keys(): test_case.get('config')['config_info'] = test_dict test_case['user_account'] = account add_config_data(type=True, **test_case) if 'test' in test_case.keys(): # 忽略config test_case.get('test')['case_info'] = test_dict if 'validate' in test_case.get( 'test').keys(): # 适配validate两种格式 validate = test_case.get('test').pop('validate') new_validate = [] for check in validate: if 'comparator' not in check.keys(): for key, value in check.items(): tmp_check = { "check": value[0], "comparator": key, "expected": value[1] } new_validate.append(tmp_check) test_case.get('test')['validate'] = new_validate test_case['user_account'] = account add_case_data(type=True, **test_case)
def config_info_logic(type=True, **kwargs): config = kwargs.pop('config') ''' 动态展示模块 ''' if 'request' not in config.keys(): return load_modules(**config) else: logging.debug('配置原始信息: {kwargs}'.format(kwargs=kwargs)) if config.get('name').get('config_name') is '': return '配置名称不可为空' if config.get('name').get('project') is None or config.get('name').get('project') is '': return '请先添加项目' if config.get('name').get('config_module') is None or config.get('name').get('config_module') is '': return '请先添加模块' if config.get('name').get('config_author') is '': return '创建者不能为空' name = config.pop('name') config.setdefault('name', name.pop('config_name')) config.setdefault('config_info', name) request_data = config.get('request').pop('request_data') data_type = config.get('request').pop('type') if request_data and data_type: if data_type == 'json': config.get('request').setdefault(data_type, request_data) else: data_dict = key_value_dict('data', **request_data) if not isinstance(data_dict, dict): return data_dict config.get('request').setdefault(data_type, data_dict) headers = config.get('request').pop('headers') if headers: config.get('request').setdefault('headers', key_value_dict('headers', **headers)) variables = config.pop('variables') if variables: variables_list = key_value_list('variables', **variables) if not isinstance(variables_list, list): return variables_list config.setdefault('variables', variables_list) parameters = config.pop('parameters') if parameters: params_list = key_value_list('parameters', **parameters) if not isinstance(params_list, list): return params_list config.setdefault('parameters', params_list) kwargs.setdefault('config', config) return add_config_data(type, **kwargs)
def config_info_logic(type=True, **kwargs): config = kwargs.pop('config') ''' 动态展示模块 ''' if 'request' not in config.keys(): return load_modules(**config) else: if config.get('name').get('config_name') is '': return '配置名称不可为空' if config.get('name').get('project') is None or config.get('name').get( 'project') is '': return '请先添加项目' if config.get('name').get('config_module') is None or config.get( 'name').get('config_module') is '': return '请先添加模块' if config.get('name').get('config_author') is '': return '创建者不能为空' name = config.pop('name') config.setdefault('name', name.pop('config_name')) config.setdefault('config_info', name) request_data = config.get('request').pop('request_data') data_type = config.get('request').pop('type') if request_data and data_type: if data_type == 'json': config.get('request').setdefault(data_type, request_data) else: config.get('request').setdefault( data_type, key_value_dict(**request_data)) headers = config.get('request').pop('headers') if headers: config.get('request').setdefault('headers', key_value_dict(mode=2, **headers)) variables = config.pop('variables') if variables: config.setdefault('variables', key_value_list(mode=3, **variables)) kwargs.setdefault('config', config) return add_config_data(type, **kwargs)
def config_info_logic(type=True, **kwargs): """ 模块信息逻辑处理及数据处理 :param type: boolean: True 默认新增 False:更新数据 :param kwargs: dict: 模块信息 :return: ok or tips """ config = kwargs.pop('config') ''' 动态展示模块 ''' if 'request' not in config.keys(): return load_modules(**config) else: logging.debug('配置原始信息: {kwargs}'.format(kwargs=kwargs)) if config.get('name').get('config_name') is '': return '配置名称不可为空' if config.get('name').get('config_author') is '': return '创建者不能为空' if config.get('name').get('project') == '请选择': return '请选择项目' if config.get('name').get('config_module') == '请选择': return '请选择模块' if config.get('name').get('project') == '': return '请先添加项目' if config.get('name').get('config_module') == '': return '请先添加模块' name = config.pop('name') config.setdefault('name', name.pop('config_name')) config.setdefault('config_info', name) request_data = config.get('request').pop('request_data') data_type = config.get('request').pop('type') if request_data and data_type: if data_type == 'json': config.get('request').setdefault(data_type, request_data) else: data_dict = key_value_dict('data', **request_data) if not isinstance(data_dict, dict): return data_dict config.get('request').setdefault(data_type, data_dict) headers = config.get('request').pop('headers') if headers: config.get('request').setdefault( 'headers', key_value_dict('headers', **headers)) variables = config.pop('variables') if variables: variables_list = key_value_list('variables', **variables) if not isinstance(variables_list, list): return variables_list config.setdefault('variables', variables_list) parameters = config.pop('parameters') if parameters: params_list = key_value_list('parameters', **parameters) if not isinstance(params_list, list): return params_list config.setdefault('parameters', params_list) hooks = config.pop('hooks') if hooks: setup_hooks_list = key_value_list('setup_hooks', **hooks) if not isinstance(setup_hooks_list, list): return setup_hooks_list config.setdefault('setup_hooks', setup_hooks_list) teardown_hooks_list = key_value_list('teardown_hooks', **hooks) if not isinstance(teardown_hooks_list, list): return teardown_hooks_list config.setdefault('teardown_hooks', teardown_hooks_list) kwargs.setdefault('config', config) return add_config_data(type, **kwargs)
def test_add_config_data_with_grammar_error(self): """ 为add_config_data添加一个语法有问题的config,返回语法有误的提示 """ self.assertIs(operation.add_config_data(False, **congi), False)