学习周记 #07 | 2026 年 AI Web UI 自动化平台进阶:集成 Allure 报告 + 测试历史记录 + 一键导出脚本

发布时间:2026/10/22 9:44:22
学习周记 #07 | 2026 年 AI Web UI 自动化平台进阶:集成 Allure 报告 + 测试历史记录 + 一键导出脚本 前言大家好第6期我们搭好了平台基本框架本期重点解决“执行完之后怎么看结果”和“怎么复用历史脚本”两个核心痛点加入Allure 报告自动生成与展示SQLite 存储测试历史记录一键导出可独立运行的测试脚本这样整个平台就更接近真实团队使用的工具了。一、环境准备新增依赖Bashpip install allure-pytest sqlalchemy alembic # alembic 用于数据库迁移可选二、核心代码升级1. 更新 agents/workflow.py增加 Allure 支持Pythonimport allure import pytest def execute_playwright_test(test_code: str, test_id: str): try: with open(fgenerated_test_{test_id}.py, w, encodingutf-8) as f: f.write(test_code) # 执行并生成 Allure 报告 result pytest.main([ fgenerated_test_{test_id}.py, --alluredir./reports/allure-results, --browserchromium ]) # 生成 Allure HTML 报告 os.system(allure generate ./reports/allure-results -o ./reports/allure-report --clean) return { status: success if result 0 else failed, report_url: /reports/allure-report/index.html } except Exception as e: return {status: error, message: str(e)}2. 添加数据库模型models.pyPythonfrom sqlalchemy import create_engine, Column, Integer, String, Text, DateTime from sqlalchemy.orm import declarative_base from datetime import datetime Base declarative_base() engine create_engine(sqlite:///test_history.db) class TestHistory(Base): __tablename__ test_history id Column(Integer, primary_keyTrue) requirement Column(Text) generated_code Column(Text) execution_status Column(String(50)) report_url Column(String(200)) create_time Column(DateTime, defaultdatetime.utcnow) Base.metadata.create_all(engine)3. FastAPI 接口升级main.py 关键部分Pythonfrom sqlalchemy.orm import Session from models import TestHistory, engine app.post(/generate-and-run) async def generate_and_run(req: TestRequest): try: result await asyncio.to_thread(run_test_workflow, req.requirement) # 保存历史记录 with Session(engine) as session: history TestHistory( requirementreq.requirement, generated_coderesult.get(final_code), execution_statusresult.get(execution_result, {}).get(status), report_urlresult.get(execution_result, {}).get(report_url) ) session.add(history) session.commit() return { status: success, history_id: history.id, report_url: result.get(execution_result, {}).get(report_url), code: result.get(final_code)[:500] ... # 预览 } except Exception as e: return {status: error, message: str(e)} # 新增接口查看历史记录 app.get(/history) async def get_history(): with Session(engine) as session: histories session.query(TestHistory).order_by(TestHistory.create_time.desc()).all() return [{id: h.id, requirement: h.requirement[:100], status: h.execution_status, time: h.create_time} for h in histories]4. 前端增强index.html 增加历史记录和导出按钮HTML!-- 在原有页面中增加 -- button onclickexportScript()导出当前脚本/button div idhistory/div script async function exportScript() { // 调用后端 /export 接口下载 .py 文件 window.location.href /export?history_id currentHistoryId; } /script三、常见报错及解决方案本期重点Allure 命令找不到解决全局安装 pip install allure-pytest 后确保 allure 命令在 PATH 中或用 Python subprocess 调用完整路径。SQLite 数据库锁OperationalError: database is locked解决使用 Session 时确保及时 commit() 和 close()高并发时考虑切换 PostgreSQL。Allure 报告生成失败no results解决在 pytest 执行时必须指定 --alluredir生成前确认 ./reports/allure-results 目录有 json 文件。导出脚本乱码或缺少 import解决在导出接口中添加 code # -*- coding: utf-8 -*-\n code 并确保 Coder Agent Prompt 要求完整代码。FastAPI 返回大代码块时超时/内存高解决只返回预览代码完整代码通过单独 /download 接口返回文件。时间不一致UTC vs 本地时间解决使用 datetime.now() 而非 utcnow()或统一用 timezone。Playwright 执行时浏览器崩溃解决增加 headlessFalse 测试或限制并发数使用 semaphore。历史记录查询慢解决给 create_time 加索引或限制返回条数分页。四、生产落地建议加入用户认证FastAPI Users 或 JWT测试报告自动邮件通知支持并行执行多个任务Celery Redis脚本版本管理保存到 Git 或数据库五、今日感悟加上 Allure 报告、历史记录和导出功能后这个平台已经具备了基本可用于小团队的条件。 我越来越觉得AI 测试平台的核心价值不是取代人工而是把重复劳动自动化把人解放出来做更有价值的测试设计和质量保障工作。下一期预告AI Web UI 自动化专栏 #06平台安全加固 权限控制 多用户支持 测试任务异步队列

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询