Dify 高级实验(09):测试用例生成——如何让 AI 自动产出测试用例?
Dify 高级实验09测试用例生成——如何让 AI 自动产出测试用例Dify 实验系列 · 高级 09/10 | 实验编号DIFY-103-091. 实验目的掌握「Agent 编排 结构化输出」的生成式工作流范式让 LLM 扮演 QA 工程师从一段功能描述自动产出可直接执行的测试用例CSV 格式。核心是三层结构化输出链路测试点列表LLM 输出 JSON 数组类型/描述/优先级代码节点解析兜底逐条用例迭代节点对每个测试点生成完整用例 JSON前置条件/步骤/预期结果CSV 交付代码节点csv.writer汇总LLM 最终格式化出统计摘要 完整 CSV。适合QA / 测试开发 / 需要把「写用例」自动化的团队。前置要求中级实验 09 代码节点、14 知识库检索、16 迭代节点。2. 场景设计输入feature_desc功能描述paragraphmodule_name模块名称text-input输出一份含统计摘要与完整 CSV 的测试用例文档可直接复制进 Excel。输入「用户注册功能输入手机号验证码注册」→ 自动产出 10-15 条用例正常/边界/异常全覆盖P0-P3 分级——QA 半天的手工工作量压缩到几分钟。3. 节点拓扑开始feature_desc module_name → 知识库检索测试用例模板top_k3 → LLM 生成测试点JSON 数组类型/描述/优先级 → Code 解析测试点json.loads 截断 25 条 注入 module → 迭代节点逐条生成详细用例 └→ 迭代内 LLM 生成单条用例JSON前置条件/步骤/预期 → Code 汇总 CSVcsv.writer → LLM 格式化输出统计摘要 完整 CSV→ 结束4. 关键配置4.1 开始节点-label:功能描述required:truetype:paragraphvariable:feature_desc-label:模块名称required:truetype:text-inputvariable:module_name4.2 生成测试点lm_points数量约束 「只输出 JSON」 结构示例——让输出可被下游代码节点稳定解析你是一个 QA 工程师。根据功能描述生成测试点列表。 功能描述{{#start.feature_desc#}} 模块{{#start.module_name#}} 参考模板{{#kb_templates.result#}} 要求 1. 覆盖功能测试、边界测试、异常测试 2. 每个测试点包含类型(功能/边界/异常)、描述、优先级(P0-P3) 3. P0 是核心功能必须覆盖P3 是边缘场景 4. 测试点数量控制在 10-15 个 5. 输出 JSON 数组格式只输出 JSON不要输出其他任何内容 输出格式[{type: 功能, description: 正常登录, priority: P0}, ...]注意该节点必须reasoning_format: separated——思考过程一旦混入text下方 cd_parse 的json.loads直接失败流程卡在步骤 0。4.3 解析测试点cd_parse两个关键设计① 迭代数组上限 30points[:25]截断留余量② 把 module 注入每个 item——迭代内 LLM 只引用 item不引用外层节点自包含模式依赖只进不出defmain(llm_text:str,module_name:str)-dict:importjson,re text(llm_textor).strip()points[]mre.search(r\[.*\],text,re.DOTALL)ifm:try:parsedjson.loads(m.group(0))ifisinstance(parsed,list):pointsparsedexceptException:points[]pointspoints[:25]# 迭代数组上限 30截断留余量items[]forpinpoints:ifnotisinstance(p,dict):continueitems.append({type:str(p.get(type,功能)),description:str(p.get(description,)),priority:str(p.get(priority,P2)),module:str(module_nameor未指定模块)})return{test_points:items,count:len(items)}4.4 迭代内生成单条用例lm_case迭代容器输入[cd_parse, test_points]输出收集[lm_case, text]string 是迭代 output_selector 可见类型。内部 prompt 全部从 item 取字段同样reasoning_format: separated根据测试点生成完整的测试用例。 模块{{#iter_cases.item.module#}} 测试点{{#iter_cases.item.description#}} 类型{{#iter_cases.item.type#}} 优先级{{#iter_cases.item.priority#}} 输出 JSON只输出 JSON不要输出其他任何内容 {module: 模块名, test_point: 测试点描述, type: 功能/边界/异常, priority: P0-P3, precondition: 前置条件, steps: [步骤1, 步骤2], expected: 预期结果} 要求前置条件具体、步骤可执行、预期结果可验证。4.5 汇总 CSVcd_summary迭代输出收集到的是array[string]每条可能是字符串——先json.loads还原再写 CSVdefmain(all_cases:list)-dict:importcsv,io,json cases[]forcinall_casesor[]:ifisinstance(c,str):try:cjson.loads(c)exceptException:c{}ifisinstance(c,dict):cases.append(c)outputio.StringIO()writercsv.writer(output)writer.writerow([模块,测试点,类型,优先级,前置条件,步骤,预期结果])forcaseincases:stepscase.get(steps,[])or[]ifnotisinstance(steps,list):steps[str(steps)]writer.writerow([case.get(module,),case.get(test_point,),case.get(type,),case.get(priority,),case.get(precondition,),; .join(str(s)forsinsteps),case.get(expected,)])return{csv_output:output.getvalue(),case_count:len(cases)}4.6 格式化输出lm_formatmax_tokens: 8000 明确「只输出正文」——长交付物场景的标配双保险你是 QA 测试用例交付专员。基于以下 CSV 内容生成一份可直接交付的测试用例文档。 共生成 {{#cd_summary.case_count#}} 条测试用例CSV 内容如下 {{#cd_summary.csv_output#}} 请输出1. 测试用例统计摘要总数、功能/边界/异常分布2. 完整 CSV 内容保持原样方便复制导入 Excel。 只输出最终报告正文不要输出任何解释性文字、思考过程或 Markdown 代码块标记。5. 运行验证输入feature_desc预期实测用户注册功能输入手机号验证码注册10-15 条用例覆盖功能/边界/异常输出统计摘要 CSV与预期一致购物车结算功能支持优惠券15-20 条用例优先级 P0-P3 分级与预期一致空功能描述 / 超长描述不崩溃输出空用例文档或少量兜底用例与预期一致cd_parse 空数组兜底6. 采坑点坑现象修复迭代链路 LLM 思考污染lm_points 未开推理标签分离时text混入think思考cd_parse 的json.loads解析失败流程卡在步骤 0lm_points / lm_case 显式reasoning_format: separatedDeepSeek 推理模型默认 tagged必须显式写迭代输入数组超过 30 个元素运行报length of var item must be less than 30 elements双保险prompt 限「10-15 个」 cd_parsepoints[:25]截断留余量dify103_09 P3 实测迭代内 LLM 引用外层节点字段上下文依赖外传、字段取不到调试困难自包含模式进入迭代前把 module 等上下文注入每个 item迭代内只引用{{#iter_cases.item.xxx#}}迭代输出每条是字符串直接当 dict 用报错迭代 output_selector 只能收集 string对 str 调case.get(module)抛 AttributeErrorcd_summary 先isinstance(c, str)再json.loads还原长交付文档 text 为空思考与输出共享 max_tokens默认 2000被挤空或内容写进思考部分lm_formatmax_tokens: 8000 prompt「只输出最终报告正文」dify103_09 实测只加 prompt 约束即恢复7. 实验文档及源码获取实验文档完整操作步骤DIFY-103-09测试用例生成器.md源码可直接导入知识库已预填 dataset_iddify103_09_测试用例生成器.yml文章聚焦核心配置与采坑点实验的完整分步操作知识库种子准备/节点搭建/参数表见实验文档原文。下一篇Dify 高级实验10综合实战——如何从零搭建一个企业级智能客服平台 你在这个实验的场景里踩过什么坑欢迎评论区分享你的实战经验。

相关新闻

Android Studio模拟器配置全攻略:从原理到实战,解决启动卡顿与AVD报错

Android Studio模拟器配置全攻略:从原理到实战,解决启动卡顿与AVD报错

1. 项目概述:为什么需要一个“听话”的模拟器?如果你刚开始接触安卓开发,或者正在为一个新项目搭建环境,那么“配置Android Studio安卓模拟器”这件事,大概率是你遇到的第一个,也是最让人头疼的坎儿。你可能…

2026/8/12 17:52:11 阅读更多 →
LSM模型原理与Python实现:可转债定价与套利策略实战

LSM模型原理与Python实现:可转债定价与套利策略实战

这次我们来看一个在量化金融领域备受关注的模型——LSM模型,及其在可转债套利策略中的应用。这不是一个需要本地部署的AI生成模型,而是一个经典的金融工程模型,用于解决美式期权的定价难题,并衍生出在可转债这一复杂衍生品上的套利…

2026/8/13 20:24:58 阅读更多 →
SpringBoot3+Vue3+MySQL 宿舍报修缴费系统源码前后端分离实战

SpringBoot3+Vue3+MySQL 宿舍报修缴费系统源码前后端分离实战

一、项目简介 本系统是一套面向高校或企业宿舍场景的报修与水电缴费一体化管理平台,采用前后端分离架构,后端基于 SpringBoot 3.x 提供 RESTful API,前端基于 Vue 3 构建单页应用。系统内置 JWT 身份认证与 RBAC 权限控制,覆盖学生…

2026/8/13 20:24:48 阅读更多 →

最新新闻

大型房地产网站建设方案:如何打造高转化、强体验的数字营销核心阵地

大型房地产网站建设方案:如何打造高转化、强体验的数字营销核心阵地

现在做房地产,光靠发传单、搞线下活动,那已经是过去式了。大家想想,现在的购房者,尤其是90后、00后这群主力军,他们看房的第一站绝对是手机和电脑。如果你在搜索引擎上搜不到你的楼盘,或者打开你的官网加载慢得像蜗牛爬,那客户转头就会去竞争对手那儿看去了。所以,搞一…

2026/8/13 20:26:06 阅读更多 →
react-native-autolink高级用法:结合导航库实现应用内页面跳转

react-native-autolink高级用法:结合导航库实现应用内页面跳转

react-native-autolink高级用法:结合导航库实现应用内页面跳转 【免费下载链接】react-native-autolink Automatic linking of URLs, phone numbers, emails, handles, and even custom patterns in text for React Native 项目地址: https://gitcode.com/gh_mirr…

2026/8/13 20:26:06 阅读更多 →
5个实战技巧:揭秘Xshell密码恢复的巧妙方法

5个实战技巧:揭秘Xshell密码恢复的巧妙方法

5个实战技巧:揭秘Xshell密码恢复的巧妙方法 【免费下载链接】SharpXDecrypt Xshell全版本密码恢复工具 项目地址: https://gitcode.com/gh_mirrors/sh/SharpXDecrypt 你是否曾经遇到过这样的尴尬场景?🕵️ 电脑重装系统后,…

2026/8/13 20:26:06 阅读更多 →
Grist开源关系型电子表格数据库:3分钟快速上手的终极指南

Grist开源关系型电子表格数据库:3分钟快速上手的终极指南

Grist开源关系型电子表格数据库:3分钟快速上手的终极指南 【免费下载链接】grist-core Grist is the evolution of spreadsheets. 项目地址: https://gitcode.com/GitHub_Trending/gr/grist-core 还在为Excel的局限性而烦恼吗?想要数据库的强大功…

2026/8/13 20:26:06 阅读更多 →
PentestGPT:AI赋能的自动化渗透测试框架完整指南

PentestGPT:AI赋能的自动化渗透测试框架完整指南

PentestGPT:AI赋能的自动化渗透测试框架完整指南 【免费下载链接】PentestGPT Automated Penetration Testing Agentic Framework Powered by Large Language Models 项目地址: https://gitcode.com/GitHub_Trending/pe/PentestGPT 你是否曾想过,…

2026/8/13 20:26:06 阅读更多 →
深入了解九江建设局网站如何助力城市高质量发展与便民服务提升

深入了解九江建设局网站如何助力城市高质量发展与便民服务提升

在这个信息高度透明的时代,政府职能部门的数字化转型不仅仅是技术层面的升级,更是一场深刻的治理理念和为民服务模式的变革。对于每一位生活在九江或者关注九江发展的市民、投资者以及相关行业从业者来说,获取准确、及时、权威的政务信息变得前所未有的重要。在这个过程中,…

2026/8/13 20:25:05 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →