ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

自动化神器:用 Markdown 写 Gauge 自动化用例,配 TaoToken 打通 AI 生成链路

自动化神器:用 Markdown 写 Gauge 自动化用例,配 TaoToken 打通 AI 生成链路 1. 为什么我劝你把自动化用例写成 Markdown先说结论Gauge 是目前少数把「用例即文档」这件事做彻底的 BDD 框架。它用 Markdown 的#、##、*三级结构直接映射测试套件、测试场景、测试步骤写出来的.spec文件丢给产品经理也能看懂而底层用 Python、Java、JS 随便哪种语言实现步骤即可。对于天天被 Excel 用例和脚本脱节折磨的团队这套东西的迁移成本比想象中低得多。但真正落地时会撞上两个坑一是步骤实现和描述文件容易各写各的改一处忘一处二是团队想用 AI 批量生成用例骨架时Key 和 API 通道散落在每个人的环境变量里没法统一管理。这篇就按「环境准备 → 项目初始化 → 写 spec → 写实现 → 数据驱动 → 跑起来 → 接 AI 生成链路」的顺序走一遍中间把 TaoToken 的 config.toml 配置骨架嵌进去让 AI 生成用例这件事变成团队可复现的动作而不是某个人本地跑通的玄学。适合谁看写过一点 Python、被 BDD 概念绕晕过、想让测试用例既能跑又能当文档的测试开发同学。全文命令都可直接复制最后会给出一次完整的「AI 生成 运行验证」闭环。2. 环境准备与 TaoToken 前置配置2.1 Gauge 本体安装Gauge 的安装包在 GitHub Releases 页面Windows 下是gauge-1.1.1-windows.x86_64.exe一路下一步装完把gauge.exe所在目录加进 PATH。macOS 用brew install gaugeLinux 用官方脚本即可。验证gauge -v能打印版本号就说明装好了。Python 插件单独装gauge install pythonVS Code 里再装一个 Gauge 插件.spec文件就有语法高亮和「运行单个场景」的按钮了。2.2 为什么这里要引入 TaoTokenGauge 本身不依赖任何 AI 服务但我们要做的是「用自然语言 Markdown 快速产出可维护用例」这一步如果靠人手敲效率提升有限。真正省时间的是让模型根据需求描述生成.spec骨架和step_impl里的函数签名人只做校验和补断言。问题在于团队里每个人各自申请 Key、各自配 base_url版本一多就乱。TaoToken 在这里的角色是统一 Key 和 API 通道——一个 Key 走所有模型调用配置写进项目里的config.toml新人 clone 下来填个环境变量就能跑。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置时别抄错。注意TaoToken 是模型调用通道不替代 Gauge 本身也不替代你的编辑器。它解决的是「AI 生成用例时 Key 和通道统一」这一层。2.3 config.toml 配置骨架在项目根目录建一个config.toml把模型通道和 Gauge 运行参数放一起方便 CI 读取# config.toml —— 项目级统一配置骨架 [ai] provider taotoken base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY # 不写死 Key从环境变量读 model claude-3-5-sonnet # 按需替换为通道支持的模型名 timeout 60 [gauge] specs_dir specs impl_dir step_impl env python report_dir reports/html-report [ci] run_all gauge run specs run_single gauge run specs/name.specKey 从环境变量注入本地这样设export TAOTOKEN_API_KEY你的KeyWindows PowerShell 用$env:TAOTOKEN_API_KEY你的Key。Key 在控制台的 API Keys 页面创建地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建后只显示一次记得存好。3. 项目初始化与 Markdown 用例骨架3.1 初始化项目建目录、切进去、初始化mkdir gauge_study cd gauge_study gauge init python初始化会生成env/、logs/、specs/、step_impl/四个目录外加一个官方样例example.spec和对应的step_impl/step_implementation.py。目录职责很清晰specs放 Markdown 描述step_impl放各语言的实现env放环境配置logs放运行日志。3.2 用 Markdown 写 spec 文件在specs/下新建name.spec。Gauge 的 Markdown 规则只有三条要记#开头是 Spec测试集合一个文件只能有一个##开头是 Scenario测试场景一个 Spec 至少一个*开头是 Step测试步骤一个 Scenario 至少一个。# Name This is a spec file that describes name type and length. ## Test name type * The type of Beck must be string ## Test name length * The length of Beck must be 4这里Beck是测试数据string和4是期望结果。描述文件只负责「说什么」不负责「怎么做」。3.3 步骤实现与参数化在step_impl/下建name_impl.py从getgauge.python引入step装饰器from getgauge.python import step step(The type of name must be expected_type) def test_name_type(name, expected_type): assert isinstance(name, str) assert expected_type string step(The length of name must be expected_length) def test_name_length(name, expected_length): assert len(name) int(expected_length)关键点装饰器里的字符串必须和.spec里的步骤描述逐字对应只是把具体值换成变量名。变量名顺序即函数参数顺序。描述和实现分离后改数据不用动代码改逻辑不用动描述。4. 数据驱动表格与 CSV 两种写法4.1 表格驱动要批量测多个姓名在name.spec里加一个场景步骤后跟一个 Markdown 表格## Test multiple names by table * All names that have type and length | name | type | length | | ------ | -------- | ------ | | Beck | string | 4 | | Alice | string | 5 | | Bob | string | 3 |对应实现里装饰器参数末尾加tablefrom getgauge.python import step step(All names that have type and length table) def test_all_names_by_table(table): names table.get_column_values_with_name(name) types table.get_column_values_with_name(type) lengths table.get_column_values_with_name(length) for n, t, l in zip(names, types, lengths): assert isinstance(n, str) assert t string assert len(n) int(l)get_column_values_with_name按列名取整列返回可迭代对象zip 起来逐行断言。4.2 CSV 驱动建resources/names.csvname,type,length Beck,string,4 Alice,string,5 Bob,string,3spec 里用table:resources/names.csv引用## Test multiple names by csv * All names that supply by table:resources/names.csv实现里遍历 table每次拿到一行from getgauge.python import step step(All names that supply by table) def test_all_names_by_csv_file(table): for row in table: name, type_, length row assert isinstance(name, str) assert type_ string assert len(name) int(length)CSV 路径是相对项目根目录的写错会直接报找不到文件这点比表格更容易踩坑。5. 运行验证与 AI 生成链路打通5.1 三种运行粒度跑全部 specgauge run specs只跑name.specgauge run specs/name.spec只跑某个场景用行号定位gauge run specs/name.spec:13这里的13是name.spec中目标场景##所在的行号。运行完在reports/html-report/index.html生成报告浏览器打开即可看到每个场景的通过状态。5.2 用 TaoToken 生成 spec 骨架把需求描述丢给模型让它按 Gauge 的 Markdown 规则输出.spec骨架。用 curl 验证通道是否通curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet, messages: [ {role: user, content: 按 Gauge 的 Markdown 规则为「用户登录功能」生成一个 .spec 骨架包含成功登录和密码错误两个场景步骤用 * 开头测试数据用引号包裹。} ] }返回的 Markdown 直接粘进specs/login.spec再让模型补step_impl的函数签名人只做断言校验。这样一轮下来一个场景的骨架从手写 5 分钟压到 1 分钟以内。5.3 一次可复现的闭环完整动作gauge init python→ 写config.toml→ 用 TaoToken 生成login.spec→ 补login_impl.py→gauge run specs/login.spec→ 看报告。CI 里把TAOTOKEN_API_KEY配成 secretgauge run specs作为流水线步骤报告目录归档即可。6. 本篇常见错排查报错Step implementation not found装饰器字符串和 spec 步骤描述不一致。逐字比对注意变量名的尖括号和空格。Gauge 对空格敏感The type of name和The type of name是两个步骤。报错Table not found或 CSV 读不到CSV 路径写成了绝对路径或少了resources/前缀。统一用相对项目根目录的路径并在config.toml里把specs_dir和资源目录约定清楚。gauge run specs/name.spec:13跑错场景行号是##那一行的行号不是步骤行。改完 spec 后行号会变建议用场景名过滤而不是硬编码行号。TaoToken 调用返回 401TAOTOKEN_API_KEY没导出或拼写错误。用echo $TAOTOKEN_API_KEY确认注意 API 基址是https://taotoken.net/api不要带 UTM 参数。报告目录为空gauge run没在项目根目录执行或者env/default配置被改坏。回到根目录重跑检查logs/下最新日志。7. 下一步把 Key 和通道固定下来Gauge 的 Markdown 用例本身不复杂难的是让「AI 生成 人工校验 CI 执行」这条链路稳定。我的做法是把config.toml提交进仓库Key 走环境变量模型名和 base_url 统一指向 TaoToken 通道这样换模型只改一行配置不用动任何 spec 和实现。需要长期跑编码和 Agent 任务的团队可以看 Coding Plan 的额度方案https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。只是想先验证模型输出质量的直接用模型对话页面试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。接入细节和参数说明在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。Key 管理在控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。最后留一个实操建议先把现有 Excel 用例里最稳定的 10 条转成.spec跑通报告再引入 AI 生成。顺序反了容易在调试通道上耗掉耐心。
返回列表