Feature proposal: unittest.mock.NAN

Kerrick Staley k at kerrickstaley.com
Wed Jan 24 12:11:25 EST 2024


I think we should define a unittest.mock.NAN constant that can be used with
Mock.assert_called_with() to assert that an argument passed to a Mock was
NaN. NaNs are special in that math.nan != math.nan, so you can't just do
assert_called_with(math.nan). The naming is meant to parallel
unittest.mock.ANY.

Here is a reference implementation:

class _EqNaN:
    def __eq__(self, other):
        return math.isnan(other)

NAN = _EqNaN()

The alternative is that users can just define this EqNaN class themselves
as needed in test code. I encountered the need to test for a NaN argument
today and was surprised to find that (as far as I can tell) there is no
pre-built solution to this in unittest or pytest. It feels like it should
be included in some standard library.

- Kerrick


More information about the Python-list mailing list