Mailing List Archive

Feature proposal: unittest.mock.NAN
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
--
https://mail.python.org/mailman/listinfo/python-list
Re: Feature proposal: unittest.mock.NAN [ In reply to ]
Python ideas are discussed here these days: https://discuss.python.org/
Suggest you raise this there in the Ideas category.

Barry


> On 24 Jan 2024, at 17:11, Kerrick Staley via Python-list <python-list@python.org> wrote:
>
> 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
> --
> https://mail.python.org/mailman/listinfo/python-list
>

--
https://mail.python.org/mailman/listinfo/python-list