pytest: assert almost equal pytest: assert almost equal python python

pytest: assert almost equal


I noticed that this question specifically asked about py.test. py.test 3.0 includes an approx() function (well, really class) that is very useful for this purpose.

import pytestassert 2.2 == pytest.approx(2.3)# fails, default is ± 2.3e-06assert 2.2 == pytest.approx(2.3, 0.1)# passes# also works the other way, in case you were worried:assert pytest.approx(2.3, 0.1) == 2.2# passes

The documentation is here.


You will have to specify what is "almost" for you:

assert abs(x-y) < 0.0001

to apply to tuples (or any sequence):

def almost_equal(x,y,threshold=0.0001):  return abs(x-y) < thresholdassert all(map(almost_equal, zip((1.32, 2.4), i_return_tuple_of_two_floats())


If you have access to NumPy it has great functions for floating point comparison that already do pairwise comparison with numpy.testing.

Then you can do something like:

numpy.testing.assert_allclose(i_return_tuple_of_two_floats(), (1.32, 2.4))