来源:互联网 更新时间:2026-06-22 16:36
写单元测试这件事,很多人习惯在ChatGPT里反复对话打草稿,但要想让测试代码真正能合并进主干、跑通CI并发布使用,就必须直接跳过临时对话阶段,切换到工程化落地的模式。下面直接给出四个可以立刻执行的步骤。

用ChatGPT辅助编写单元测试时,若最终目标是产出可直接合并进主干、供CI流水线执行并发布使用的测试代码,就必须跳过临时对话式草稿阶段,进入工程化落地环节。
打开待测源码文件,定位到目标函数(例如Python中的calculate_discount),逐行确认其输入类型、允许的空值/边界值、预期返回结构及异常抛出条件。这一步不能依赖ChatGPT“猜”,
把函数完整签名、docstring和1~2个真实调用示例复制进ChatGPT对话框,指令要写成这样:“仅基于以下代码,生成pytest风格单元测试,覆盖正常路径、None输入、负数折扣率三种情况,不添加任何额外假设。”
方法一:使用pytest参数化+显式断言
要求ChatGPT输出形如@pytest.mark.parametrize("input_price,input_rate,expected", [(100, 0.1, 90), (200, 0, 200), (50, -0.05, ValueError)])的结构,并为每种情况写出对应assert或with pytest.raises()。注意它常漏掉异常类型的括号,需手动补全为ValueError而非"ValueError"。
方法二:用doctest嵌入源码(适合工具类函数)
让ChatGPT在函数docstring末尾生成三重引号包裹的doctest示例块,格式严格遵循Python最新doctest规范,每行输出前加>>>或...,结果行顶格写。这能确保测试与文档同步,且python -m doctest module.py可直接运行。
第一步:把当前项目的conftest.py路径、常用fixture名(如mock_api_client)、以及pyproject.toml中的pytest配置项(如addopts = ["-p", "no:warnings"])整理成一段说明。
第二步:将这段说明连同上一步生成的测试代码一起发给ChatGPT,指令为:“按本项目pytest环境重写该测试,使用conftest.py中已定义的fixture,禁用所有warnings抑制,保留原有参数化结构。”
第三步:拿到回复后,立即在本地终端执行pytest test_module.py -v --tb=short,观察是否报fixture 'xxx' not found或导入错误——
编辑项目根目录下的.pre-commit-config.yaml,在repos列表中追加:
- repo: https://github.com/pycqa/pylint
rev: v3.2.7
hooks:
- id: pylint
args: [--disable=all, --enable=missing-docstring,invalid-name,too-few-public-methods]
运行pre-commit install && pre-commit run --all-files,确保新写的测试文件能通过pylint检查,特别是函数名是否含test_前缀、是否遗漏docstring、是否用了未声明的全局变量。
《Off Campus》第二季官宣:这对CP还在,但不再是主角
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
币安Binance虚拟货币交易平台 币安官方APP安卓苹果下载入口
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
帅气继父网名女生可爱英文(精选100个)
帅到极致的网名女生霸气(精选100个)
折后价近千元 澳洲一店主将真老鼠缝到内裤上当时尚单品卖
如何在夸克浏览器中开启网页视频的倍速播放功能?
蒙古上单是什么梗
DOTA2 TI时隔七年重返上海!门票6月10日开抢,国服享受优先购买!
作家助手如何上传自制封面 作家助手如何设置小说的封面
韦一敏是什么梗
韩漫小少爷网名大全女生(精选100个)
网络热词聊污是什么意思
archiveofourown 实战指南:常见用法整理
有寓意的易经网名男生(精选100个)
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
抖音最火沙雕男生网名(精选100个)
阿里发布Qwen3.7-Max大模型,全球第五、国产第一
小众游戏抖音网名男生(精选100个)
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc