ChatGPT写单元测试提示词怎么加示例,结果更稳定

浅婷吖_2692

浅婷吖_2692

2026-06-06

162人浏览

原创

必须加示例,因为模型需锚定输入格式、断言风格、结构粒度三维度;示例须真实、可运行、无注释,并完整包含参数调用、字面量预期结果及fixture名称。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

chatgpt写单元测试提示词怎么加示例,结果更稳定

你想让ChatGPT生成可直接运行的单元测试代码,但每次输出的断言方式、测试函数命名、fixture用法都不一致,甚至有时漏掉import语句或写成伪代码——根本没法粘贴进项目里执行。问题不在模型能力,而在提示词没给它“可对齐的标尺”。加示例不是锦上添花,是把模糊意图转为可验证动作的关键一步。

为什么必须加示例

模型没见过你项目里的函数签名、异常类型、测试框架版本,也没见过你团队约定的assert写法(比如是用self.assertEqual还是expect(...))。不给示例,它只能按通用模板猜,而猜的结果在Pytest、unittest、Jest之间来回漂移。

示例的作用,是锚定三个维度:输入格式、断言风格、结构粒度。缺一不可。

加示例的三步实操法

第一步:选一个你项目中真实存在的、逻辑清晰的函数作为示例对象。【必须是你当前代码库里已存在且能运行的函数】。不能虚构,否则模型会模仿虚构逻辑而非你的真实约束。

第二步:手写一段你认可的、可直接跑通的测试代码——哪怕只有1个测试用例。重点保留:函数调用方式、参数传入形式(字面量/变量/fixture)、断言语句的完整结构(包括错误消息字符串)、是否包含setup/teardown逻辑。

第三步:把这段真实测试代码原样嵌入提示词,在“请生成测试”指令之后,用明确分隔符标注。例如:

请为以下函数生成3个覆盖不同分支的Pytest测试用例:
def calculate_discount(price: float, category: str) -> float:
  ...

以下是我期望的测试风格示例:
```python
def test_calculate_discount_normal_case():
  assert calculate_discount(100.0, "electronics") == 90.0
```

Ask Gemini/ChatGPT
Ask Gemini/ChatGPT

用于在用户想通过浏览器自动化与 Google Gemini 或 ChatGPT 交互时。触发短语包括“ask Gemini”“ask ChatGPT”“ask GPT”“让...”。

下载

两种高效示例嵌入方式

方法一:单例强约束型(适合新手或统一规范场景)
只提供1个最简但要素齐全的测试函数。要求模型严格复现其命名规则(test_前缀)、断言语法(==而非is)、无多余print语句。这种写法会让输出高度收敛,但灵活性略低。

方法二:多例对比型(适合复杂函数或混合框架)
并列给出2个示例:一个正常路径,一个异常路径。例如:
```python
def test_parse_json_valid_input():
  assert parse_json('{"key": "value"}') == {"key": "value"}

def test_parse_json_invalid_input():
  with pytest.raises(JSONDecodeError):
    parse_json('{invalid}')
```
这相当于告诉模型:“你要覆盖happy path和error path,且error path必须用with pytest.raises”。

注意:两个示例必须来自同一函数、同一测试文件,否则模型可能混淆上下文。

示例里必须包含的3个硬性要素

① 函数调用的完整参数列表——不能省略默认参数值,否则模型可能生成缺失参数的调用。
② 断言右侧的预期结果必须是字面量(如42、"ok"、[1,2,3]),不能是变量名或表达式,否则模型会复制变量名导致运行时报NameError。
③ 如果用了fixture(如client、db_session),示例中必须出现fixture名称且与pytest配置一致,否则生成的测试无法setup。

这三处任一缺失,都会导致生成的测试代码在CI流水线里第一轮就失败。

避坑:别把示例写成“教学模板”

错误示范:在示例里写注释解释“这里用assert是因为……”,或加一行“# 注意:每个测试只测一个关注点”。模型会把注释也当成代码结构的一部分,生成带同样注释的测试,污染可执行代码。
正确做法:示例就是干净、可运行、无注释的代码块。解释性内容全放在“请生成……”指令句里。

现在,把你的目标函数和一段真实测试代码组合进提示词,发送给ChatGPT。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

chatgpt

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

60

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

40

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

40

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

40

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

40

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

240

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

160

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

80

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ChatGPT入门手册
ChatGPT入门手册

共0课时 | 0人学习

ChatGPT使用教学
ChatGPT使用教学

共2课时 | 193人学习