# MyLocustTool **Repository Path**: dillyweiwei/my-locust-tool ## Basic Information - **Project Name**: MyLocustTool - **Description**: 一个集成 API 录入/脚本生成/实时监控/报告查看/AI总结 的性能测试工具,基于 Locust 与 Streamlit 构建。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-12-18 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyLocustTool 一个集成 API 录入/脚本生成/实时监控/报告查看/AI总结 的性能测试工具,基于 Locust 与 Streamlit 构建。支持表格片段刷新、变更门控自动刷新、曲线平滑与时间聚合、专业 Word 报告导出。 亮点: - 仅在统计 CSV 变化时刷新实时表格(变更门控),减少无效重跑 - 表格片段化渲染,只刷新数据区域,其他模块保持稳定 - 停止测试后自动关闭刷新并进行一次最终加载,结果稳定保留 - 趋势图支持“平滑曲线”和“时间聚合步长”,默认开启平滑,强度与步长均为 3 - 导出的 Word 分析报告图不受页面曲线设置影响,确保一致性与专业性 - 报告中表格列宽: - 性能指标汇总:按权重比例分配列宽 - 失败明细汇总:10% / 50% / 30% / 10% - 接口明细:均分列宽 ## 功能 - API分析:单个/批量录入 API 信息,生成测试脚本模板(自动跳转到脚本生成) - 脚本生成:配置参数并生成 Locust 脚本,一键启动测试(跳转到实时监控) - 实时监控:显示执行控制与系统性能指标 - 查看报告:选择一次测试结果,查看趋势与端点对比,下载原始 CSV,并管理报告文件(删除) - AI设置与总结:支持三种模式并在输出中标注来源 - 云端(OpenAI 兼容):`OPENAI_API_KEY`、`OPENAI_BASE_URL`、`OPENAI_MODEL` - 本地(Ollama 或 OpenAI 兼容):`LOCAL_LLM_BASE_URL`、`LOCAL_LLM_MODEL` - 无AI(规则化):无需密钥,基于数据规则生成建议 ## 安装 ```bash pip install -r requirements.txt # 可选:更快的安装方式 pip install -U uv uv pip install -r requirements.txt ``` ## 启动 ```bash streamlit run app.py ``` 提示:已内置 `streamlit-autorefresh` 优先使用;缺失时自动回退到兼容方案。若自动刷新异常,可在实时监控页“🔍 调试信息”中查看模块路径与 `sys.path` 前缀;也可在终端执行: ```bash pip show streamlit-autorefresh python -c "import streamlit_autorefresh as m, sys; print(m.__file__); print(sys.executable)" ``` ## 配置 - 将敏感信息放入 `key.env` 或通过环境变量注入: - 云端:`OPENAI_API_KEY`、`OPENAI_BASE_URL`(如 `https://api.openai.com/v1` 或 `https://api.deepseek.com/v1`)、`OPENAI_MODEL` - 本地:`LOCAL_LLM_BASE_URL`(默认 `http://localhost:11434`)、`LOCAL_LLM_MODEL` - 无AI:无需任何密钥或地址 - 说明:当选择对应模式后,页面会在输出中显示来源标签(云端/本地/无AI)与模型信息 ## 目录结构 ``` MyLocustTool/ ├── app.py ├── requirements.txt ├── README.md ├── reports/ # 自动生成的报告 CSV ├── locust_file/ # 生成的 Locust 脚本 └── src/ ├── ui/ │ ├── navigation.py │ └── pages/ │ ├── api_analyzer.py │ ├── script_generator.py │ ├── live_monitor.py │ ├── report_viewer.py │ └── ai_summary.py ├── reporter/ │ ├── visualizer.py │ ├── ai_advisor.py │ └── local_llm.py └── executor/ │ ├── runner.py │ └── monitor.py ``` ## 注意 - 不在仓库中保存任何真实密钥或令牌,示例中的 `Authorization` 仅为占位。 - 报告导出汇总 CSV 功能已移除;请下载原始统计 CSV 或使用外部工具进行汇总。 - 导航与页面状态通过会话管理,单击侧边栏即可立即刷新至目标页面。 - 实时监控页行为: - 首次进入或首次开启自动刷新即加载一次表格;之后仅在 `_stats.csv` 的 `mtime` 变化或点击“刷新”时重载 - 自动刷新在片段内触发,只影响表格区域;其他模块不重复重绘 - 测试停止后自动关闭刷新,并进行一次最终加载,结果稳定保留在界面 ## 报告导出 - 在“查看报告”页面选择一次测试结果,点击“导出分析报告(Word)” - 报告图表(接口平均响应、失败分布、吞吐量趋势、接口响应趋势)使用固定绘制策略,不受页面“图形曲线设置”的影响 - 表格列宽策略已固定,保证不同环境下版式稳定 ## 曲线设置 - 页面“图形曲线设置”折叠区默认启用“平滑曲线”,强度(窗口/跨度)=3,时间聚合步长(秒)=3 - 平滑与聚合仅影响页面图表,导出的报告图保持独立默认 ## 疑难排查 - 自动刷新无效:查看实时监控页“🔍 调试信息”确认统计 CSV 路径与 `streamlit-autorefresh` 模块路径 - 表格不出现:首次进入或开启自动刷新后会进行一次加载,若 `_stats.csv` 尚未生成则提示“统计文件尚不存在” - Word 表格列宽不生效:确认使用 Office Word 打开;表格已设置固定布局与 `tblGrid` 重建,实际宽度由页边距与列宽权重计算 ## 许可证 MIT