大模型更新测试用例
兼容 Python 脚本编写 和 YAML 数据驱动 两种模式的自动化测试框架。
log_info
page
allure.step
automation_framework/ ├── .auth/ # 认证会话存储目录 ├── config/ # 配置目录 │ ├── __init__.py │ └── settings.py # 全局配置文件 ├── tests/ # 测试用例目录 │ ├── __init__.py │ ├── conftest.py # Pytest 配置和 Fixtures │ ├── _test_runner.py # 测试运行器 │ ├── test_login.py # 登录测试用例 │ └── projects/ # 项目测试模块 │ ├── conftest.py # 项目测试 Fixtures │ └── test_new_project.py # 新建项目测试用例 ├── testcases/ # YAML 用例目录 │ └── login_case.yaml # YAML 格式测试用例 ├── utils/ # 工具类目录 │ ├── __init__.py │ ├── action_helper.py # Action 助手类 │ ├── log_tools.py # 日志工具 │ ├── yaml_engine.py # YAML 引擎 │ └── auth_session.py # 认证会话管理 ├── lib/ # 第三方库(Allure) │ └── allure-2.22.0/ ├── outputs/ # 输出目录 (logs, reports, screenshots) │ ├── logs/ # 运行日志 │ ├── screenshots/ # 失败截图 │ ├── allure_results/ # Allure 原始结果 │ └── allure_report/ # Allure HTML 报告 ├── run.py # 测试运行入口 ├── requirements.txt # Python 依赖 ├── Dockerfile # Docker 镜像配置 └── README.md # 项目说明
BASE_URL
BROWSER_TYPE
HEADLESS
BROWSER_WIDTH
BROWSER_HEIGHT
BROWSER_TIMEOUT
OUTPUTS_DIR
LOG_PATH
SCREENSHOT_PATH
ALLURE_RESULTS_DIR
ALLURE_REPORT_DIR
ALLURE_BIN
CASES_DIR
AUTH_DIR
TEST_USER_USERNAME
TEST_USER_PASSWORD
TEST_USER_DISPLAY_NAME
框架支持两种 Allure 路径配置方式:
ALLURE_HOME
lib/allure-2.22.0/bin/
# 方式1: 设置环境变量(Windows) set ALLURE_HOME=C:\allure-2.22.0 # 方式2: 使用项目内置 Allure(无需配置) python run.py
在 tests/ 下新建文件,直接使用 Playwright 的 page 对象。 配合 allure.step 和 log_info 记录测试步骤和日志。
tests/
import pytest import allure from utils.log_tools import log_info @allure.feature("登录模块") class TestLoginScript: @allure.story("登录成功") def test_login_success(self, page): """测试登录成功场景""" with allure.step("打开登录页面"): log_info("打开登录页面") page.goto("https://example.com/login") with allure.step("输入用户名和密码"): log_info("输入用户名和密码") page.fill("#username", "admin") page.fill("#password", "password") with allure.step("点击登录按钮"): log_info("点击登录按钮") page.click("#login-btn") with allure.step("验证登录成功"): log_info("验证登录成功") assert page.locator(".welcome").is_visible()
框架提供认证会话管理功能,可以在测试间复用登录状态:
def test_with_auth(page, auth_session): # 应用已保存的会话(自动登录) auth_session.apply_session(page.context) # 访问需要登录的页面 page.goto("/dashboard") assert page.locator(".user-info").is_visible()
在 testcases/ 目录下新建 .yaml 文件,格式如下:
name: "测试用例名称" steps: - action: "goto" # 关键字 desc: "步骤描述" # 报告中显示的步骤名 url: "https://..." # 参数
goto
url
fill
locator
text
click
type
delay
hover
dblclick
press
key
select_option
value
assert_visible
wait_for_selector
timeout
wait_for_url
screenshot
path
action
desc
Enter
Escape
ArrowDown
name: "用户登录测试" steps: - action: "goto" desc: "打开登录页面" url: "http://172.20.32.203:4000/login" - action: "fill" desc: "输入用户名" locator: "input[id='login_username']" text: "floraachy" - action: "fill" desc: "输入密码" locator: "input[id='login_password']" text: "12345678" - action: "click" desc: "点击登录按钮" locator: "button:has-text('登 录')" - action: "wait_for_selector" desc: "等待头像元素出现" locator: ".currentImg" timeout: 5000 - action: "assert_visible" desc: "验证登录成功" locator: ".currentImg"
创建虚拟环境
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
安装依赖:
pip install -r requirements.txt playwright install
python run.py
运行 python run.py 支持以下参数:
-b, --browser-type
python run.py -b firefox
--headless
python run.py --headless true
-k, --keyword
python run.py -k login
使用示例:
# 默认运行(Chromium 有头模式) python run.py # 无头模式运行(后台运行,不显示浏览器窗口) python run.py --headless true # 使用 Firefox 浏览器 python run.py -b firefox # 运行包含 "login" 关键词的测试 python run.py -k login # 组合使用:Firefox 浏览器 + 无头模式 + 过滤 login python run.py -b firefox --headless true -k login
构建镜像:
docker build -t test-frame .
运行容器(结果挂载到本地):
docker run -v $(pwd)/outputs:/app/outputs test-frame
运行结束后,进入 outputs/allure_report 目录,打开 index.html 即可查看报告。
outputs/allure_report
# 直接使用 pytest 运行(支持更多参数) pytest tests/ -v -s # 指定浏览器和模式 pytest tests/ --browser=firefox --headless=false # 只运行特定测试 pytest tests/test_login.py::TestLoginScript::test_login_success -v # 生成报告并打开 allure serve outputs/allure_results # 运行特定模块的测试 pytest tests/projects/ -v # 运行所有测试并生成 Allure 报告 pytest tests/ --alluredir=outputs/allure_results
scope="session"
@pytest.mark.flaky(reruns=3)
screenshot()
get_text()
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
混合驱动自动化测试框架
兼容 Python 脚本编写 和 YAML 数据驱动 两种模式的自动化测试框架。
核心特性
log_info工具,所有操作自动记录 Loguru 日志。page对象,配合allure.step记录步骤。框架目录结构
配置文件说明
config/settings.py
BASE_URLBROWSER_TYPEHEADLESSBROWSER_WIDTHBROWSER_HEIGHTBROWSER_TIMEOUTOUTPUTS_DIRLOG_PATHSCREENSHOT_PATHALLURE_RESULTS_DIRALLURE_REPORT_DIRALLURE_BINCASES_DIRAUTH_DIRTEST_USER_USERNAMETEST_USER_PASSWORDTEST_USER_DISPLAY_NAMEAllure 配置说明
框架支持两种 Allure 路径配置方式:
ALLURE_HOME指向 Allure 安装目录lib/allure-2.22.0/bin/下的 Allure如何编写测试用例
模式一:Python 脚本模式 (推荐用于复杂逻辑)
在
tests/下新建文件,直接使用 Playwright 的page对象。 配合allure.step和log_info记录测试步骤和日志。使用认证会话管理
框架提供认证会话管理功能,可以在测试间复用登录状态:
模式二:YAML 模式 (推荐用于简单流程)
在 testcases/ 目录下新建 .yaml 文件,格式如下:
支持的关键字详解
gotourlfilllocator,textclicklocatortypelocator,textdelay(每个字符间隔毫秒)hoverlocatordblclicklocatorpresslocator,keyselect_optionlocator,valueassert_visiblelocatorwait_for_selectorlocatortimeout(毫秒,默认 10000)wait_for_urlurltimeout(毫秒,默认 10000)screenshotpath参数说明
action: 关键字名称desc: 步骤描述,会在 Allure 报告中显示locator: 元素定位器,支持 CSS 选择器、XPath 等url: 页面 URL 地址text: 要输入的文本内容value: 下拉框选项值key: 要按下的键(如Enter,Escape,ArrowDown等)delay: 字符输入间隔(毫秒),用于模拟真实打字速度timeout: 超时时间(毫秒)path: 截图保存路径使用示例
快速开始
1. 环境准备
创建虚拟环境
安装依赖:
2. 运行测试
命令行参数
运行
python run.py支持以下参数:-b, --browser-typepython run.py -b firefox--headlesspython run.py --headless true-k, --keywordpython run.py -k login使用示例:
3. Docker 运行
构建镜像:
运行容器(结果挂载到本地):
报告查看
运行结束后,进入
outputs/allure_report目录,打开 index.html 即可查看报告。常用命令
代码优化建议
pagefixture 改为scope="session"复用浏览器@pytest.mark.flaky(reruns=3)实现失败自动重试screenshot(),get_text()等