PyTest中各测试项显示的百分比含义是什么?
关于PyTest测试会话中百分比的含义解答
嘿,我完全懂你这种小细节挠头的感觉!作为经常和pytest打交道的人,我来给你拆解一下这个百分比到底是什么:
这个百分比根本不是测试通过率,而是单个测试函数内部的测试实例执行进度——最常见的触发场景有这两种:
- 参数化测试:当你用
@pytest.mark.parametrize给一个测试函数传入多组参数时,pytest会把这个函数拆分成多个独立的测试实例来运行。比如你给某个测试函数传了4组参数,执行时就会依次显示25%、50%、75%、100%,代表当前完成了该函数多少比例的测试实例。 - 子测试(subtest):如果你的测试函数里用了
pytest.subtest()来拆分多个子逻辑,pytest也会用百分比来显示当前子测试的完成进度。
举个具体的例子:假设你写了这样的参数化测试:
import pytest @pytest.mark.parametrize("num", [1,2,3,4]) def test_num_positive(num): assert num > 0
执行时命令行就会显示类似:
test_example.py::test_num_positive[1] PASSED [ 25%] test_example.py::test_num_positive[2] PASSED [ 50%] test_example.py::test_num_positive[3] PASSED [ 75%] test_example.py::test_num_positive[4] PASSED [100%]
这里的百分比就是该测试函数下的实例完成占比,而整个测试会话最终会显示4 passed,整体通过率是100%。
你提到所有测试都已通过,但看到非100%的百分比,大概率是你在命令行实时输出中看到了某个测试函数执行过程中的中间进度,而非最终结果。只要最终会话显示所有测试通过,就说明所有实例都没问题啦!
内容的提问来源于stack exchange,提问作者klreeher




