diff --git a/services/plan_service.py b/services/plan_service.py index 0be67b682b4c2e095b449b79069e518aff79bad4..572c56a323ffea5039cf2c102ea8aa8aff1b40af 100644 --- a/services/plan_service.py +++ b/services/plan_service.py @@ -2,8 +2,9 @@ from datetime import datetime import sqlalchemy -from app import conf, log -from common.enums import Status_EN, Task_Run_Method, Case_Type, Case_Run_Method, User_Role +from app import log +from common.enums import Status_EN, Task_Run_Method, Case_Type, Case_Run_Method, User_Role, Test_Type +from common.tone.tone_request import gen_tone_job_type from models.case_model import Case from models.device_model import Device from models.job_model import FuncResult @@ -183,33 +184,37 @@ async def generate_plan_report(plan_id): async def __start_auto_task(auto_tasks): for task in auto_tasks: + # todo: 后续当参数传入 + job_type, is_set_job_type = Test_Type.FUNCTIONAL, False case_id_list = task.cases if not task.cases: task.status = Status_EN.FINISH.value await task.update() continue - case_list = await Case.query_obj_all(Case.id.in_(case_id_list.split(','))) test_config = list() - for case in case_list: - if case.custom_fields: - suite_name = case.custom_fields.get('tone_suite_name') - case_name = case.custom_fields.get('tone_case_name') - exist_suite = [suite for suite in test_config if suite['test_suite'] == suite_name] - if len(exist_suite) > 0: - exist_case = [case for case in exist_suite[0]['cases'] == case_name] - if len(exist_case) > 0: - continue - else: - exist_suite[0]['cases'].append(dict({'test_case': case_name})) - else: - test_suite = dict({'test_suite': suite_name, 'cases': [{'test_case': case_name}]}) - test_config.append(test_suite) - data = dict({ + case_dict, suite_dict = dict(), dict() + for case in await Case.query_obj_all(Case.id.in_(case_id_list.split(',')), Case.tone_case != None): + if not is_set_job_type: + job_type, is_set_job_type = case.type, True + if case.tone_case in case_dict: + continue + case_dict[case.tone_case] = True + + suite_name = case.custom_fields.get('tone_suite_name') + case_name = case.custom_fields.get('tone_case_name') + if suite_name not in suite_dict: + suite_name[suite_name] = list() + suite_name[suite_name].append({'test_case': case_name}) + for key, value in suite_dict: + test_config.append({ + 'test_suite': key, + 'cases': value + }) + ret, ok = await create_tone_job({ 'task_id': task.id, 'test_config': test_config, - 'job_type': conf.config['TONE_FUNC_JOB'] + 'job_type': gen_tone_job_type(job_type) }) - ret, ok = await create_tone_job(data) if not ok: log.logger.debug(ret) task.status = Status_EN.RUNNING.value @@ -309,4 +314,4 @@ def get_plan_template(): 'auto_task': list(), 'manual_task': list() } - } + } \ No newline at end of file