hotai.news
← 返回 AI 百科AI 百科 / 基础概念

单元测试是什么?用固定输入和断言验证代码的具体行为

用保留零值的列表函数说明单元测试,提供已运行的独立 Python 断言,区分测试通过、覆盖率和完整交付,并说明 AI 同写实现与测试的偏差。

HotAI.news · Codex 来源核对发布于 2026-10-20来源核对于 2026-10-20
先说结论

先理解这个概念

单元测试用受控输入和预期结果检查一个较小的软件单元,例如函数或类的方法,帮助发现错误和防止回归。它验证的是所覆盖条件,不保证全部系统正确,也不能替代外部接口或用户流程检查。AI生成测试可以作为起点,但断言必须来自需求;如果只复述实现,测试可能把错误行为当成正确答案。

01

用输入和断言表达预期行为

下面的函数统计非缺失元素,约定None是缺失而零是有效值。三个断言覆盖空列表、含零输入和全部缺失。示例已在本地Python运行并通过,仅验证这段独立代码,不涉及任何外部系统,也不代表一个项目已经完整测试。

如果错误实现使用if value,零会被过滤,这组输入能够指出预期与实现冲突。断言应依据任务定义,而不是把当前函数输出再抄成答案。否则测试可能与错误实现完全一致,形式上通过却没有检查真正需求。

def count_valid(values):
    return sum(value is not None for value in values)

assert count_valid([]) == 0
assert count_valid([0, None, 2]) == 2
assert count_valid([None, None]) == 0
02

单元范围与外部依赖需要明确

Python unittest使用测试用例与断言组织检查,pytest也支持普通assert。测试一个函数时,可以控制相关依赖,但替身只说明模拟条件下的行为。真实数据库或网络能否正确配合,需要集成层面的检查,不能由单元测试直接推出。

时间和随机数等不稳定输入应受到控制,避免同一版本偶尔通过偶尔失败。测试不应默认修改真实业务数据,失败以后要能定位具体输入。这里的代码只处理本地列表,便于读者理解可复现范围,没有掩盖环境依赖。

03

通过测试仍要核对覆盖和回归范围

新增边界测试后,先确认它能发现原错误,再检查修复后通过。还应运行受影响调用的相关检查,避免只测试一个新函数。覆盖率表示执行过部分代码,不等于所有需求和输入组合都正确,数字需要与错例一起解读。

AI可以帮助提出边界或生成初稿,但预期结果必须独立核对。尤其当模型同时写实现和测试时,更容易共享同一个错误假设。验收应保留命令和实际结果,未覆盖的界面或外部服务要明确说明,不能只写测试全绿。

核对来源

以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。

返回AI 百科 ↗