首页/开发/软件测试速查/测试命名与可读性
测试基础与分层67 条

测试命名与可读性

命名应表达被测行为与预期:条件 + 行为 + 结果;失败的测试名要能直接传达问题,减少翻看代码的时间。

软件测试速查开发更新于 2026-10-13

怎么给用例起名

用例命名是可执行文档的一部分:名字要说清「被测对象—条件—预期」,让人不看代码就知道在验证什么。命名还直接影响工具行为——pytest 按 test_*.py、Test*、test_* 规则收集,命名不符的用例会被静默跳过;名字同时是筛选执行(-k)与报告阅读的基础。

基本信息

通用结构对象_条件_预期,如 login_wrong_password_shows_error
Given-When-Thengiven 前提 when 操作 then 预期,适合行为描述风格
pytest 发现规则文件 test_*.py 或 *_test.py,函数 test_*,类 Test* 且无 __init__
JUnit 5方法名任意,用 @DisplayName 提供可读标题
参数化命名pytest 用 ids 给每组数据起可读名字
一致性项目内统一语言与语序;中文命名合法且可读,前提是统一

正误对照示例

正误对照示例
def test_login_wrong_password_shows_error():   # 对象_条件_预期
    ...

@pytest.mark.parametrize("role", ["admin", "user"], ids=["管理员", "普通用户"])
def test_menu_visible_by_role(role):           # 参数化 id 会进用例名
    ...

# 反例:test1 / test_login / test_check_1 —— 名字没有信息量

典型使用场景

  • 失败清单快速定位:报告里一眼认出是什么场景挂了
  • 精准重跑:pytest -k "login and password" 按名字筛选
  • 用例评审:名字清单本身就是覆盖度讨论稿
  • 跨语言团队统一:约定同一套命名语法再写代码
  • 报告可读性:给产品同看的报告需要业务语言的名字

命名反例与改法

反例问题改法
test1无信息量,失败难定位对象_条件_预期
test_login只说了对象补条件与预期
test_check_1含义靠记忆用行为动词短语
test 简称或拼音缩写团队外人读不懂完整词,统一语言
一个用例只验一件事,名字才写不长;名字写不清往往意味着用例混合了多个目的,先拆用例再改名。
改名会影响按名筛选的历史脚本与看板指标:做命名重构要一次性批量完成,别长期新旧混用。
命名不符框架收集规则等于用例不存在:新用例写完先跑一次确认被发现,别等到覆盖率审查才发现。

易错点

  • 用 Issue 编号当名字:编号含义随时间流失,半年后没人知道测试在防什么
  • 改名与断言脱节:断言改了名字没跟上,名字开始撒谎
  • 命名不符收集规则:用例静默不执行,覆盖率假象持续数月
  • 中英混杂无规则:有人用拼音有人用英文,搜索与筛选全部失效
  • 把随机串或时间戳当名字:看似唯一实则无意义,报告与版本历史无法对照

数据来源与参考

  • Google Engineering Practices(Code Review 指南:测试可读性)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌