Функция testing.assert_equal
Функция testing.assert_equal (из подмодуля np.testing) сравнивает два объекта и выбрасывает исключение AssertionError, если они не равны. В отличие от встроенного оператора ==, эта функция предназначена специально для тестирования: она предоставляет подробные сообщения об ошибках, включая различия между массивами, и корректно обрабатывает массивы NumPy. Функция поддерживает сравнение массивов разных форм, типов данных и структур, а также учитывает значения NaN. Это одна из ключевых функций для написания юнит-тестов в библиотеках, использующих NumPy.
Синтаксис
np.testing.assert_equal(actual, desired, [err_msg=''], [verbose=True])
Параметры:
-
actual- фактическое значение (результат работы тестируемого кода). -
desired- ожидаемое значение (эталон). -
err_msg(необязательный) - дополнительное сообщение об ошибке, которое будет выведено при несовпадении. -
verbose(необязательный) - еслиTrue, выводится подробное сообщение о различиях.
Функция ничего не возвращает в случае успеха. При несовпадении выбрасывает исключение AssertionError.
Пример успешной проверки
Проверим равенство двух массивов:
import numpy as np
from numpy.testing import assert_equal
actual = np.array([1, 2, 3, 4, 5])
desired = np.array([1, 2, 3, 4, 5])
assert_equal(actual, desired)
print("Тест пройден: массивы равны")
Результат выполнения кода:
Тест пройден: массивы равны
Функция не выбрасывает исключение, так как массивы равны.
Пример неудачной проверки
Проверим неравные массивы и посмотрим на сообщение об ошибке:
import numpy as np
from numpy.testing import assert_equal
actual = np.array([1, 2, 3, 4, 5])
desired = np.array([1, 2, 3, 4, 6])
try:
assert_equal(actual, desired)
except AssertionError as e:
print("Ошибка:", e)
Результат выполнения кода:
Ошибка:
Items are not equal:
item=4
actual=5
desired=6
Сообщение указывает на позицию (индекс 4), где обнаружено различие.
Пример с пользовательским сообщением
Добавим собственное сообщение об ошибке:
import numpy as np
from numpy.testing import assert_equal
actual = np.array([1, 2, 3])
desired = np.array([1, 2, 4])
try:
assert_equal(actual, desired, err_msg="Массивы должны быть равны")
except AssertionError as e:
print("Ошибка:", e)
Результат выполнения кода:
Ошибка:
Массивы должны быть равны
Items are not equal:
item=2
actual=3
desired=4
К стандартному сообщению добавлена пользовательская строка.
Пример со скалярными значениями
Функция работает и со скалярами:
import numpy as np
from numpy.testing import assert_equal
assert_equal(5, 5)
print("Скаляры равны")
try:
assert_equal(5, 6)
except AssertionError as e:
print("Ошибка при сравнении скаляров:", e)
Результат выполнения кода:
Скаляры равны
Ошибка при сравнении скаляров:
Items are not equal:
actual=5
desired=6
Скаляры сравниваются корректно.
Смотрите также
-
функцию
assert_array_equal,
которая проверяет равенство массивов с учетом формы -
функцию
assert_allclose,
которая проверяет приближенное равенство с заданной точностью -
функцию
assert_raises,
которая проверяет, что код выбрасывает определенное исключение -
функцию
assert_array_almost_equal,
которая проверяет приближенное равенство массивов