pytest.approx
fails with TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'
· Issue #10702 · pytest-dev/pytest (original) (raw)
When using approx
to test float and one of the objects in the assert
statement contain None
I see the following TypeError:
TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'.
Minimal example
Test
import pytest
# Expecting assertion error with differing item
# Instead I see "TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'."
def test_pytest_none_approx():
actual_result = {"a": 1.2}
expected_result = {"a": None}
approx_expected_result = pytest.approx(expected_result)
assert approx_expected_result == actual_result
Output
E AssertionError: assert approx({'a': 1.2 ± 1.2e-06}) == {'a': None}
E (pytest_assertion plugin: representation of details failed: /Users/milanwiedemann/.pyenv/versions/3.10.4/lib/python3.10/site-packages/_pytest/python_api.py:270: TypeError: unsupported operand type(s) for -: 'float' and 'NoneType'.
E Probably an object has a faulty __repr__.)
pip list
Package Version
-------------- -------
attrs 22.2.0
exceptiongroup 1.1.0
iniconfig 2.0.0
packaging 23.0
pip 22.0.4
pluggy 1.0.0
pytest 7.2.1
setuptools 58.1.0
tomli 2.0.1
Cersions of OS and pytest
- macOS 12.6.3
- python 3.10.4
- pytest 7.2.1