pytest 基础、参数化与失败诊断
接口测试、单元测试与自动化测试#Python全栈#第十七阶段#接口测试、单元测试与自动化测试#pytest 基础、参数化与失败诊断约 803 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
pytest 怎样发现和执行测试文件、函数与类?
追问 测试没有被收集时,应检查哪些命名、目录与配置?怎样区分“没有运行任何测试”和“全部测试通过”?
怎样执行一个测试文件、一个具体用例或某一组用例?
追问 节点标识、名称筛选和 marker 筛选适合什么场景?如何在运行输出中确认实际选择了预期测试?
pytest 中普通 assert 如何表达有效断言?
追问 为什么只断言返回对象非空通常不够?列表内容、数量、顺序和关键字段分别在什么情况下需要检查?
怎样使用 pytest.raises 验证异常行为?
追问 应把哪些语句放在异常上下文内?异常类型、必要的消息片段与异常后的状态怎样检查,为什么捕获所有异常可能掩盖错误?
怎样用 parametrize 表达一组输入与预期结果?
追问 参数名称、用例标识和单个场景失败报告如何组织?为什么把全部场景写在普通循环里可能降低诊断清晰度?
参数化测试如何避免可变输入互相污染?
追问 列表或字典是否会被 pytest 自动深复制?被测函数修改输入时,怎样为每个用例创建独立数据?
怎样定义和使用 unit、integration、slow 等自定义 marker?
追问 注册 marker 与严格检查有什么作用?如何防止拼写错误导致某些测试从回归组中悄悄遗漏?
skip、skipif 与 xfail 分别表达什么?
追问 缺少可选环境和已知缺陷应怎样区分?预期失败的用例突然通过时,怎样发现并移除过期标记?
测试失败、准备失败和测试收集失败应怎样分别排查?
追问 从报告中如何定位 fixture、导入、依赖和断言问题?怎样保留原始错误,而不是通过宽泛异常处理把失败变成通过?
怎样观察测试日志、输出、警告和运行耗时?
追问 caplog 与输出捕获适合验证什么?慢测试是否一定代表业务性能差,怎样区分准备成本、外部等待和真正的执行耗时?
pytest 核对资料: 参数化测试。其他运行选项与标记规则应结合项目使用的 pytest 版本核对。