Exemple #1
0
async def update(t_id: int, task: models.TaskInCase):
    try:
        task_obj = await models.Task.get(id=t_id)
        cases_obj = [await models.Case.get(id=case) for case in task.case_list]
        del task.case_list
        job_time = "待定"
        async with in_transaction():
            await models.Task.filter(id=t_id).update(**task.dict(exclude_unset=True))
            if task.is_timer:
                try:
                    job = scheduler.modify_job(
                        str(t_id), func=run_case, args=(
                            t_id,), cron=task.cron)
                except Exception as e:
                    print(e)
                    job = scheduler.new_job(
                        str(t_id), func=run_case, args=(
                            t_id,), cron=task.cron)
                job_time = job.next_run_time
            else:
                try:
                    scheduler.delete_job(str(task_obj.id))
                except Exception as e:
                    print(e)
            # 清除该对象与case的关系
            await task_obj.cases.clear()
            # 添加关系
            await task_obj.cases.add(*cases_obj)
            return core.Success(message=f"修改成功,下次运行时间{job_time}", data=await models.Task_Pydantic.from_queryset_single(models.Task.get(id=t_id)))
    except Exception as e:
        return core.Fail(message=f"修改失败.{e}")
Exemple #2
0
async def select(e_id: int):
    try:
        data = await models.Env_Pydantic.from_queryset_single(
            models.Env.get(id=e_id))
        return core.Success(data=data)
    except Exception as e:
        return core.Fail(message=f"查看详情失败.{e}")
Exemple #3
0
async def create(env: models.EnvIn_Pydantic):
    try:
        env_obj = await models.Env.create(**env.dict(exclude_unset=True))
        return core.Success(
            data=await models.Env_Pydantic.from_tortoise_orm(env_obj))
    except Exception as e:
        return core.Fail(message=f"创建失败.{e}")
Exemple #4
0
async def update(r_id: int, interface: models.InterfaceIn_Pydantic):
    await models.Interface.filter(id=r_id
                                  ).update(**interface.dict(exclude_unset=True)
                                           )
    return core.Success(
        data=await models.Interface_Pydantic.from_queryset_single(
            models.Interface.get(id=r_id)))
Exemple #5
0
async def update(e_id: int, env: models.EnvIn_Pydantic):
    try:
        await models.Env.filter(id=e_id).update(**env.dict(exclude_unset=True))
        return core.Success(
            data=await models.Env_Pydantic.from_queryset_single(
                models.Env.get(id=e_id)))
    except Exception as e:
        return core.Fail(message=f"更新失败.{e}")
Exemple #6
0
async def update_code(script: core.Code):
    # 验证是否可以被执行
    try:
        exec(script.code)
        await write_file('util/extend.py', script.code)
        return core.Success()
    except Exception as e:
        return core.Fail(message=f"更新失败.{e}")
Exemple #7
0
async def create(interface: models.InterfaceIn_Pydantic):
    try:
        interface_obj = await models.Interface.create(**interface.dict(
            exclude_unset=True))
        return core.Success(data=await models.Interface_Pydantic.
                            from_tortoise_orm(interface_obj))
    except Exception as e:
        return core.Fail(message="创建失败.")
Exemple #8
0
async def login(user: core.Login):
    try:
        user_obj = await models.User.get(username=user.username)
        if user_obj and core.verify_password(user.password, user_obj.password):
            return core.Success(data=core.Token(
                token=core.create_access_token({"sub": user_obj.username})))
    except Exception as e:
        print(e)
        return core.Fail(message="用户名或密码错误")
Exemple #9
0
async def select_all(limit: int = 10, page: int = 1):
    skip = (page - 1) * limit
    # from_queryset 针对queryset 对象序列化
    data = await models.Env_Pydantic.from_queryset(
        models.Env.all().order_by('-created_at').offset(skip).limit(limit))
    return core.Success(data={
        "total": await models.Env.all().count(),
        "items": data
    })
Exemple #10
0
async def delete(t_id: int):
    task_obj = await models.Task.filter(id=t_id).delete()
    print(task_obj == True)
    if task_obj:
        try:
            scheduler.delete_job(str(t_id))
        except Exception as e:
            print(e)
        return core.Success()
    return core.Fail(message="任务不存在.")
Exemple #11
0
async def create(project: models.ProjectIn_Pydantic):
    """
    :param project: name 字段唯一

    :return:
    """
    try:
        project_obj = await models.Project.create(**project.dict(exclude_unset=True))
        # from_tortoise_orm 从 数据表中序列化, 针对 模型类对象
        return core.Success(data=await models.Project_Pydantic.from_tortoise_orm(project_obj))
    except Exception as e:
        return core.Fail(message="项目已存在.")
Exemple #12
0
async def create(task: models.TaskInCase):
    """
    :param task: name 字段唯一

    :return:
    """
    # try:
    #     # 获取case对象,如果没有将抛出异常
    #     cases_obj = [await models.Case.get(id=case) for case in task.case_list]
    #     del task.case_list
    #
    #     # 定时任务, 事务        async with in_transaction():
    #
    #     if task.is_timer:
    #         trigger = scheduler.verif_cron(task.cron)
    #         if trigger:
    #             task_obj = await models.Task.create(**task.dict(exclude_unset=True))
    #             # 添加到多对多关系中
    #             await task_obj.cases.add(*cases_obj)
    #
    #             job = scheduler.new_job(str(task_obj.id), func=run_case, args=(
    #                 task_obj.id,), trigger=trigger)
    #             return core.Success(message=f"创建成功,下次运行的时间{job.next_run_time}")
    #         else:
    #             return core.Fail(message="corn表达式设置有误")
    #     else:
    #         task_obj = await models.Task.create(**task.dict(exclude_unset=True))
    #         # 添加到多对多关系中
    #         await task_obj.cases.add(*cases_obj)
    #     return core.Success(data=await models.Task_Pydantic.from_tortoise_orm(task_obj))
    # except Exception as e:
    #     print(e)
    #     return core.Fail(message="任务已存在.")
    try:
        # 事务来实现
        cases_obj = [await models.Case.get(id=case) for case in task.case_list]
        del task.case_list
        job_time = "待定"
        async with in_transaction():
            task_obj = await models.Task.create(**task.dict(exclude_unset=True))
            if task.is_timer:
                job = scheduler.new_job(str(task_obj.id), func=run_case, args=(
                    task_obj.id,), cron=task.cron)
                job_time = job.next_run_time
            await task_obj.cases.add(*cases_obj)
            return core.Success(message=f"创建成功,下次运行{job_time}")
    except Exception as e:
        return core.Fail(message=f"创建失败.{e}")
Exemple #13
0
async def get_plant():
    # 获取当天数据 总数 SELECT count(*) FROM project WHERE  strftime('%Y-%m-%d',
    # created_at) = date('now')
    tables = ['project', 'env', 'interface', '"case"', 'task', 'report']
    today = []
    async with in_transaction("default") as conn:
        for table in tables:
            data = await conn.execute_query_dict(
                f"SELECT count(*) as total FROM {table} WHERE  strftime('%Y-%m-%d', created_at) = date('now')"
            )
            today.append(data[0]["total"])
    return core.Success(
        data={
            "project": len(await models.Project.all()),
            "report": await models.Report.all().count(),
            "interface": await models.Interface.all().count(),
            "case": await models.Case.all().count(),
            "task": await models.Task.all().count(),
            "today": today
        })
Exemple #14
0
async def delete(r_id: int):
    interface_obj = await models.Interface.filter(id=r_id).delete()
    if interface_obj:
        return core.Success()
    return core.Fail(message="接口不存在.")
Exemple #15
0
async def select(c_id: int):
    data = await models.Case_Pydantic.from_queryset_single(
        models.Case.get(id=c_id))
    return core.Success(data=data)
Exemple #16
0
async def get_code():
    return core.Success(data=await read_file('util/extend.py'))
Exemple #17
0
async def select(t_id: int):
    data = await models.Task_Pydantic.from_queryset_single(models.Task.get(id=t_id))
    return core.Success(data=data)
Exemple #18
0
async def select(p_id: int):
    data = await models.Project_Pydantic.from_queryset_single(models.Project.get(id=p_id))
    return core.Success(data=data)
Exemple #19
0
async def help_doc():
    return core.Success(data=await read_file('apiAutoTestWeb使用说明.md'))
Exemple #20
0
async def delete(r_id: int):
    report_obj = await models.Report.filter(id=r_id).delete()
    if report_obj:
        return core.Success()
    return core.Fail(message="报告不存在.")
Exemple #21
0
async def background_run(t_id: int, background_tasks: BackgroundTasks):
    background_tasks.add_task(run_case, t_id)
    return core.Success(message="测试任务在后台运行中, 请稍后前往报告管理查看报告")
Exemple #22
0
async def get(j_id: int):
    result = scheduler.get_job(str(j_id))
    return core.Success(data=str(result))
Exemple #23
0
async def delete(e_id: int):
    env_obj = await models.Env.filter(id=e_id).delete()
    if env_obj:
        return core.Success()
    return core.Fail(message="环境不存在.")
Exemple #24
0
async def get_projects():
    data = await models.Project_Pydantic.from_queryset(models.Project.all())
    return core.Success(data={"total": len(data), "items": data})
Exemple #25
0
async def delete(c_id: int):
    case_obj = await models.Case.filter(id=c_id).delete()
    if case_obj:
        return core.Success()
    return core.Fail(message="用例不存在.")
Exemple #26
0
async def update(p_id: int, project: models.ProjectIn_Pydantic):
    await models.Project.filter(id=p_id).update(**project.dict(exclude_unset=True))
    return core.Success(data=await models.Project_Pydantic.from_queryset_single(models.Project.get(id=p_id)))
Exemple #27
0
async def select(r_id: int):
    data = await models.Interface_Pydantic.from_queryset_single(
        models.Interface.get(id=r_id))
    return core.Success(data=data)
Exemple #28
0
async def run(t_id: int):
    data = await run_case(t_id)
    return core.Success(data={"id": data})
Exemple #29
0
async def get_cases(p_id: int):
    sql = f'select "case".id, "case".name, "case".interface_id from "case", interface WHERE  interface.id = "case".interface_id AND interface.project_id ={p_id};'
    async with in_transaction("default") as conn:
        data = await conn.execute_query_dict(sql)
    return core.Success(data={"total": len(data), "items": data})
Exemple #30
0
async def delete(p_id: int):
    project_obj = await models.Project.filter(id=p_id).delete()
    if project_obj:
        return core.Success()
    return core.Fail(message="项目不存在.")