testing.assert_equal(actual, desired, err_msg='', verbose=True, *, strict=False)[source]#

Raises an AssertionError if two objects are not equal.

Given two objects (scalars, lists, tuples, dictionaries or numpy arrays), check that all elements of these objects are equal. An exception is raised at the first conflicting values.

This function handles NaN comparisons as if NaN was a “normal” number. That is, AssertionError is not raised if both objects have NaNs in the same positions. This is in contrast to the IEEE standard on NaNs, which says that NaN compared to anything must return False.


The object to check.


The expected object.

err_msgstr, optional

The error message to be printed in case of failure.

verbosebool, optional

If True, the conflicting values are appended to the error message.

strictbool, optional

If True and either of the actual and desired arguments is an array, raise an AssertionError when either the shape or the data type of the arguments does not match. If neither argument is an array, this parameter has no effect.

New in version 2.0.0.


If actual and desired are not equal.


By default, when one of actual and desired is a scalar and the other is an array, the function checks that each element of the array is equal to the scalar. This behaviour can be disabled by setting strict==True.


>>> np.testing.assert_equal([4, 5], [4, 6])
Traceback (most recent call last):
Items are not equal:

The following comparison does not raise an exception. There are NaNs in the inputs, but they are in the same positions.

>>> np.testing.assert_equal(np.array([1.0, 2.0, np.nan]), [1, 2, np.nan])

As mentioned in the Notes section, assert_equal has special handling for scalars when one of the arguments is an array. Here, the test checks that each value in x is 3:

>>> x = np.full((2, 5), fill_value=3)
>>> np.testing.assert_equal(x, 3)

Use strict to raise an AssertionError when comparing a scalar with an array of a different shape:

>>> np.testing.assert_equal(x, 3, strict=True)
Traceback (most recent call last):
Arrays are not equal

(shapes (2, 5), () mismatch)
 ACTUAL: array([[3, 3, 3, 3, 3],
       [3, 3, 3, 3, 3]])
 DESIRED: array(3)

The strict parameter also ensures that the array data types match:

>>> x = np.array([2, 2, 2])
>>> y = np.array([2., 2., 2.], dtype=np.float32)
>>> np.testing.assert_equal(x, y, strict=True)
Traceback (most recent call last):
Arrays are not equal

(dtypes int64, float32 mismatch)
 ACTUAL: array([2, 2, 2])
 DESIRED: array([2., 2., 2.], dtype=float32)