NaNs are special in that math.nan != math.nan, so you can't just do.... def method(self):
assert_called_with(math.nan).
class ProductionClass:
real = ProductionClass()
real.something = MagicMock()
real.method()
real.something.assert_called_once_with( math.nan )
On 24 Jan 2024, at 17:11, Kerrick Staley via Python-list =<python-list@python.org> wrote:
=20with
I think we should define a unittest.mock.NAN constant that can be used =
Mock.assert_called_with() to assert that an argument passed to a Mock =was
NaN. NaNs are special in that math.nan !=3D math.nan, so you can't =just do
assert_called_with(math.nan). The naming is meant to parallel unittest.mock.ANY.themselves
=20
Here is a reference implementation:
=20
class _EqNaN:
def __eq__(self, other):
return math.isnan(other)
=20
NAN =3D _EqNaN()
=20
The alternative is that users can just define this EqNaN class =
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.
=20
- Kerrick
--=20
https://mail.python.org/mailman/listinfo/python-list
=20
Sysop: | Tetrazocine |
---|---|
Location: | Melbourne, VIC, Australia |
Users: | 6 |
Nodes: | 8 (0 / 8) |
Uptime: | 46:27:05 |
Calls: | 45 |
Files: | 21,492 |
Messages: | 63,526 |