You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pytest测试时列表长度断言无法正常触发失败的问题

问题根因

这个函数根本没被Pytest当成测试用例执行,自然不会触发断言失败。
Pytest默认靠命名规则识别测试用例,不符合命名的普通函数会被直接跳过,不会运行:

  • 测试文件要匹配test_*.py或者*_test.py的命名格式
  • 测试类名需要以Test开头,且类中不能实现__init__构造方法
  • 测试函数、测试类中的测试方法必须以test_开头,才会被收集后执行

你写的函数名是create_list_from_string,开头没有test_前缀,Pytest扫描文件时只会把它当成普通的自定义工具函数,根本不会运行内部的代码。你提到同文件内其他测试用例可以正常触发失败,就是因为那些用例的命名符合Pytest的识别规则,唯独这个函数没被识别到。

顺便提一句,不建议用str作为变量名,会覆盖Python内置的字符串类型,虽然这段代码里不会触发报错,但属于容易埋下隐患的编码坏习惯。

修复方式

给函数名加上test_前缀,符合Pytest的用例命名规则即可:

def test_create_list_from_string():
    s = "I love pizza"
    str_list = list(s)
    assert 123 == len(str_list)

改完之后重新运行Pytest,就会正常触发断言失败,抛出assert 123 == 12的报错。如果后续想确认哪些用例被Pytest成功收集,可以在运行Pytest时加上-v参数,执行日志会列出所有待运行的测试用例名称,可以很方便地排查漏识别的问题。


内容的提问来源于stack exchange,提问作者joeg3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:51:17