# CRun **Repository Path**: testdog/CRun ## Basic Information - **Project Name**: CRun - **Description**: API接口测试平台后端 - **Primary Language**: Python - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-01-09 - **Last Updated**: 2025-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 技术栈 - **django + minIO(OSS) + rest_framework(分页与序列数据) +apscheduler(定时任务)** ### 表结构概览 - **Account:** 用户表 - **Project:** 项目表 - **UserToken:** token表,登录后储存TOKEN - **Notification:** 通知表(配置通知类型,和参数) - **ProjectEnv:** 项目环境表(mysql/ redis 连接信息, url, 通知类型等) - **ApiGroups:** 接口/用例 分组表 (配置 user服,room服等) - **ApiGrades:** 接口等级表,准备废弃 - **ApiInfo:** 接口表(接口信息) - **GlobalHeader:** 全局请求头表 - **GlobalVar:** 全局变量表(支持执行自定义代码结果作为参数,然后替换) - **GlobalOrder:** 全局命令表 (配置mysql,redis 命令结果作为参数,然后替换) - **GlobalLabel:** 全局标签表(自定义标签,比如用例严重级别,业务权限,测试集) - **TestCase:** 测试用例表 - **TestStep:** 测试步骤表 - **TestCaseExecution:** 运行数据表,用例执行时,逻辑已增加,增加执行记录 - **TestReport:** 测试报告表 - **TestTask:** 通过添加任务来批量执行多个用例(通过用例集表的数据进行筛选) - **TestSuite:** 用户集表,表示一组特定途用的用例集合,比如执行标签 1,2,3,加上分组 user服,然后通过用例执行这条用例集 - **TestPerformance:** 性能测试表(存储JMETER线程组配置) - **TestPerfReport:** 性能测试,测试报告表(待写) - **TestPerfExecution:** 执行测试执行记录表 (待写) ### 用例配置说明 ```yaml skip: False #跳过 labels: #用例标签 - 1 - 3 severity: critical #用户等级 variable: {} #用例级别变量 parametrize: {} # project_env: STAGING setup_hooks: ["function3"] #执行用例前先执行 "function3"函数 teardown_hooks: ["function4"] #结束用例前执行 "function2"函数 testcase_name: 用户进房后验证进房信息 step_case: #用例步骤 - sleep: 0 #执行前睡眠x秒 api_info: 1 #步骤关联接口 variable: #步骤变量 roomid: "1449564" uid: "1449564" extractor: #变量导出 (加入用例变量) - viewer_num: "$.resp_json.viewer_num" step_name: 进房 validator: #断言 - equal: #断言方式 - "$.resp_json.room_id" - "int(${roomid})" #变量前加类型会转化成对应类型的数据 req_headers: {} #配置后即update接口信息的headers setup_hooks: ["function1"] #执行步骤前先执行 "function1"函数 teardown_hooks: ["function2"] #结束步骤前执行 "function2"函数 - sleep: 1 #支持多步骤配置 ... ``` ### 断言类型支持 - **==:** 等于 - **lt:** 小于 - **le:** 小于等于 - **gt:** 大于 - **ge:** 大于等于 - **not_eq:** 不等于 - **str_eq:** str类型等于 - **len_eq:** 长度相等 - **len_gt:** 长度大于 - **len_ge:** 长度大于等于 - **len_lt:** 长度小于 - **len_le:** 长度小于等于 - **contains:** 检查结果是否包含预期结果 - **contained_by:** 预期结果是否包含检查结果 - **startswith:** 字符串的检查结果是否以预期结果开头 - **endswith:** 字符串的检查结果是否以预期结果结束 ### 主流程说明(简化版) - **单独执行用例流程:** 请求 testcase/runTest -- 执行用例 -- 执行关联的步骤 - **测试任务执行用例流程:** 添加测试任务 -- 设置定时任务 --执行 --收集绑定对应标签的用例 -- 执行用例 -- 执行关联的步骤 -- 执行完成后输出测试报告 - **性能测试执行流程:** 上传JMX文件 -- 编辑线程组配置 -- 执行JMX文件 -- 展示执行记录输出性能测试结果 ![img.png](img.png)