应使用结构化进阶版提示词:明确框架(pytest 7.4+/Python 3.10)、提供完整函数上下文、强制覆盖正常/异常/边界三类输入、细化断言粒度;实战增强版需加入覆盖率要求、AAA模板示范及低质内容禁令。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Gemini为你生成高质量、可直接运行的单元测试代码,但发现它默认输出的测试用例覆盖浅、断言模糊、缺乏边界场景——这说明提示词还没突破“普通版”层级。
普通版提示词:能跑就行
直接输入“给这个函数写个单元测试”,Gemini大概率返回一个带test_前缀的函数,调用一次、用assert检查返回值。它不会自动识别参数类型、不会构造空字符串或None输入、也不会区分pytest和unittest风格。
使用固定的 Next.js/Tailwind/Prisma 技术栈构建并记录独立 SaaS 项目,仅将 FastAPI 用于 Python 工作负载,并遵循严格的架构规范。
这版提示词没指定框架、没限定语言版本、没要求覆盖分支,【生成的测试无法通过CI中的严格检查】。
结构化进阶版:精准控制输出
第一步:声明目标框架与环境
明确写出“使用pytest 7.4+,Python 3.10,要求测试函数名以test_开头,每个测试用例只验证一个行为”。
第二步:提供被测函数完整上下文
粘贴函数定义(含类型注解、docstring、关键注释),不要只写函数名。Gemini看不到源码就只能靠猜,而猜出来的边界条件往往漏掉负数、空列表、嵌套None等真实易错点。
第三步:强制覆盖三类输入
在提示中列出必须包含的测试用例类型:① 正常流程(如传入有效字典);② 异常路径(如传入None、空字符串、类型错误);③ 边界值(如列表长度为0/1/1000、浮点数精度±1e-9)。
第四步:约束断言粒度
加上“每个assert语句必须指向单一可验证事实,禁止出现assert result != None,改用assert result is not None或assert isinstance(result, ExpectedType)”。
实战增强版:带Mock与覆盖率指令
方法一:注入测试约束关键词
在提示末尾追加:“生成的测试需满足:100%行覆盖(不含pass语句)、所有if/else分支均有对应测试、不使用skip或xfail、mock对象仅用于外部I/O依赖(如requests.get、open)。”
方法二:提供期望的测试结构模板
直接给出你想要的格式样例:def test_calculate_total_with_discount():\n # Arrange\n cart = ShoppingCart([Item("A", 100)])\n # Act\n result = cart.calculate_total(0.1)\n # Assert\n assert result == 90.0 —— Gemini会模仿这种Arrange-Act-Assert分段写法,比堆砌assert更易读。
方法三:反向排除低质输出
加上“禁止生成以下内容:未初始化的变量名(如obj、data)、中文注释、print调试语句、用‘可能’‘应该’等模糊表述代替确定断言、在测试里重新实现被测逻辑”。
【如果被测函数调用了time.time()或random.random(),必须用patch mock掉,否则测试结果不可重现】。

















