unittest2pytest icon indicating copy to clipboard operation
unittest2pytest copied to clipboard

Missing necessary parentheses and not allowing equality

Open bmw opened this issue 2 years ago • 1 comments

In my work on https://github.com/certbot/certbot/pull/9585, unittest2pytest rewrote these lines:

self.assertAlmostEqual(mock_sleep.call_args_list[1][0][0], interval - 1, delta=1)
self.assertAlmostEqual(mock_sleep.call_args_list[2][0][0], interval/2 - 1, delta=1)

as

assert abs(mock_sleep.call_args_list[1][0][0]-interval - 1) < 1
assert abs(mock_sleep.call_args_list[2][0][0]-interval/2 - 1) < 1

This is incorrect for two reasons:

  1. Parentheses should be added around the 2nd argument to assertAlmostEqual (or the - 1 changed to + 1).
  2. assertAlmostEqual doesn't error if the difference between the first two arguments equals the delta argument.

(With that said, I just ran unittest2pytest on 28k lines of real test code and this was the only problem I encountered other than the pytest.raises limitation described at the bottom of your README. Nice work!)

bmw avatar Feb 15 '23 21:02 bmw

We should have a pytest.approx there instead of the cheap imitation

RonnyPfannschmidt avatar Feb 16 '23 07:02 RonnyPfannschmidt