Description
If a comparison on the length of a sequence fails, the sequence is truncated in the failure explanation regardless of the verbosity setting.
Example script:
def test_list():
l = list(range(50))
assert l == []
def test_list_len():
l = list(range(50))
assert len(l) == 49
def test_dict():
d = dict(zip(range(50), range(50)))
assert d == {}
def test_dict_len():
d = dict(zip(range(50), range(50)))
assert len(d) == 49
Output of python3 -m pytest test_truncation.py
:
====================================================== FAILURES ======================================================
_____________________________________________________ test_list ______________________________________________________
def test_list():
l = list(range(50))
> assert l == []
E assert [0, 1, 2, 3, 4, 5, ...] == []
E Left contains 50 more items, first extra item: 0
E Use -v to get more diff
test_truncation.py:3: AssertionError
___________________________________________________ test_list_len ____________________________________________________
def test_list_len():
l = list(range(50))
> assert len(l) == 49
E assert 50 == 49
E + where 50 = len([0, 1, 2, 3, 4, 5, ...])
test_truncation.py:7: AssertionError
_____________________________________________________ test_dict ______________________________________________________
def test_dict():
d = dict(zip(range(50), range(50)))
> assert d == {}
E AssertionError: assert {0: 0, 1: 1, 2: 2, 3: 3, ...} == {}
E Left contains 50 more items:
E {0: 0,
E 1: 1,
E 2: 2,
E 3: 3,
E 4: 4,
E 5: 5,...
E
E ...Full output truncated (45 lines hidden), use '-vv' to show
test_truncation.py:11: AssertionError
___________________________________________________ test_dict_len ____________________________________________________
def test_dict_len():
d = dict(zip(range(50), range(50)))
> assert len(d) == 49
E assert 50 == 49
E + where 50 = len({0: 0, 1: 1, 2: 2, 3: 3, ...})
test_truncation.py:15: AssertionError
============================================== short test summary info ===============================================
FAILED test_truncation.py::test_list - assert [0, 1, 2, 3, 4, 5, ...] == []
FAILED test_truncation.py::test_list_len - assert 50 == 49
FAILED test_truncation.py::test_dict - AssertionError: assert {0: 0, 1: 1, 2: 2, 3: 3, ...} == {}
FAILED test_truncation.py::test_dict_len - assert 50 == 49
Output of python3 -m pytest test_truncation.py -v
:
====================================================== FAILURES ======================================================
_____________________________________________________ test_list ______________________________________________________
def test_list():
l = list(range(50))
> assert l == []
E AssertionError: assert [0, 1, 2, 3, 4, 5, ...] == []
E Left contains 50 more items, first extra item: 0
E Full diff:
E [
E - ,
E + 0,
E ? +
E + 1,...
E
E ...Full output truncated (49 lines hidden), use '-vv' to show
test_truncation.py:3: AssertionError
___________________________________________________ test_list_len ____________________________________________________
def test_list_len():
l = list(range(50))
> assert len(l) == 49
E assert 50 == 49
E + where 50 = len([0, 1, 2, 3, 4, 5, ...])
test_truncation.py:7: AssertionError
_____________________________________________________ test_dict ______________________________________________________
def test_dict():
d = dict(zip(range(50), range(50)))
> assert d == {}
E AssertionError: assert {0: 0, 1: 1, 2: 2, 3: 3, ...} == {}
E Left contains 50 more items:
E {0: 0,
E 1: 1,
E 2: 2,
E 3: 3,
E 4: 4,
E 5: 5,...
E
E ...Full output truncated (98 lines hidden), use '-vv' to show
test_truncation.py:11: AssertionError
___________________________________________________ test_dict_len ____________________________________________________
def test_dict_len():
d = dict(zip(range(50), range(50)))
> assert len(d) == 49
E assert 50 == 49
E + where 50 = len({0: 0, 1: 1, 2: 2, 3: 3, ...})
test_truncation.py:15: AssertionError
============================================== short test summary info ===============================================
FAILED test_truncation.py::test_list - AssertionError: assert [0, 1, 2, 3, 4, 5, ...] == []
FAILED test_truncation.py::test_list_len - assert 50 == 49
FAILED test_truncation.py::test_dict - AssertionError: assert {0: 0, 1: 1, 2: 2, 3: 3, ...} == {}
FAILED test_truncation.py::test_dict_len - assert 50 == 49
Output of python3 -m pytest test_truncation.py -vv
:
====================================================== FAILURES ======================================================
_____________________________________________________ test_list ______________________________________________________
def test_list():
l = list(range(50))
> assert l == []
E assert [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49] == []
E Left contains 50 more items, first extra item: 0
E Full diff:
E [
E - ,
E + 0,
E ? +
E + 1,
E + 2,
E + 3,
E + 4,
E + 5,
E + 6,
E + 7,
E + 8,
E + 9,
E + 10,
E + 11,
E + 12,
E + 13,
E + 14,
E + 15,
E + 16,
E + 17,
E + 18,
E + 19,
E + 20,
E + 21,
E + 22,
E + 23,
E + 24,
E + 25,
E + 26,
E + 27,
E + 28,
E + 29,
E + 30,
E + 31,
E + 32,
E + 33,
E + 34,
E + 35,
E + 36,
E + 37,
E + 38,
E + 39,
E + 40,
E + 41,
E + 42,
E + 43,
E + 44,
E + 45,
E + 46,
E + 47,
E + 48,
E + 49,
E ]
test_truncation.py:3: AssertionError
___________________________________________________ test_list_len ____________________________________________________
def test_list_len():
l = list(range(50))
> assert len(l) == 49
E assert 50 == 49
E + where 50 = len([0, 1, 2, 3, 4, 5, ...])
test_truncation.py:7: AssertionError
_____________________________________________________ test_dict ______________________________________________________
def test_dict():
d = dict(zip(range(50), range(50)))
> assert d == {}
E assert {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 15, 16: 16, 17: 17, 18: 18, 19: 19, 20: 20, 21: 21, 22: 22, 23: 23, 24: 24, 25: 25, 26: 26, 27: 27, 28: 28, 29: 29, 30: 30, 31: 31, 32: 32, 33: 33, 34: 34, 35: 35, 36: 36, 37: 37, 38: 38, 39: 39, 40: 40, 41: 41, 42: 42, 43: 43, 44: 44, 45: 45, 46: 46, 47: 47, 48: 48, 49: 49} == {}
E Left contains 50 more items:
E {0: 0,
E 1: 1,
E 2: 2,
E 3: 3,
E 4: 4,
E 5: 5,
E 6: 6,
E 7: 7,
E 8: 8,
E 9: 9,
E 10: 10,
E 11: 11,
E 12: 12,
E 13: 13,
E 14: 14,
E 15: 15,
E 16: 16,
E 17: 17,
E 18: 18,
E 19: 19,
E 20: 20,
E 21: 21,
E 22: 22,
E 23: 23,
E 24: 24,
E 25: 25,
E 26: 26,
E 27: 27,
E 28: 28,
E 29: 29,
E 30: 30,
E 31: 31,
E 32: 32,
E 33: 33,
E 34: 34,
E 35: 35,
E 36: 36,
E 37: 37,
E 38: 38,
E 39: 39,
E 40: 40,
E 41: 41,
E 42: 42,
E 43: 43,
E 44: 44,
E 45: 45,
E 46: 46,
E 47: 47,
E 48: 48,
E 49: 49}
E Full diff:
E {
E - ,
E + 0: 0,
E + 1: 1,
E + 2: 2,
E + 3: 3,
E + 4: 4,
E + 5: 5,
E + 6: 6,
E + 7: 7,
E + 8: 8,
E + 9: 9,
E + 10: 10,
E + 11: 11,
E + 12: 12,
E + 13: 13,
E + 14: 14,
E + 15: 15,
E + 16: 16,
E + 17: 17,
E + 18: 18,
E + 19: 19,
E + 20: 20,
E + 21: 21,
E + 22: 22,
E + 23: 23,
E + 24: 24,
E + 25: 25,
E + 26: 26,
E + 27: 27,
E + 28: 28,
E + 29: 29,
E + 30: 30,
E + 31: 31,
E + 32: 32,
E + 33: 33,
E + 34: 34,
E + 35: 35,
E + 36: 36,
E + 37: 37,
E + 38: 38,
E + 39: 39,
E + 40: 40,
E + 41: 41,
E + 42: 42,
E + 43: 43,
E + 44: 44,
E + 45: 45,
E + 46: 46,
E + 47: 47,
E + 48: 48,
E + 49: 49,
E }
test_truncation.py:11: AssertionError
___________________________________________________ test_dict_len ____________________________________________________
def test_dict_len():
d = dict(zip(range(50), range(50)))
> assert len(d) == 49
E assert 50 == 49
E + where 50 = len({0: 0, 1: 1, 2: 2, 3: 3, ...})
test_truncation.py:15: AssertionError
============================================== short test summary info ===============================================
FAILED test_truncation.py::test_list - assert [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,...
FAILED test_truncation.py::test_list_len - assert 50 == 49
FAILED test_truncation.py::test_dict - assert {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 14: 14, 15: 1...
FAILED test_truncation.py::test_dict_len - assert 50 == 49
Why are the sequences always truncated in the explanations of the length comparison failures, regardless of verbosity?
Python 3.10.12, pytest-7.4.4, my OS is Linux Mint 21.2.
pip list
output attached: