Функция AssertAlmostEqual() модуля unittest в Python

AssertAlmostEqual() — это метод класса TestCase модуля unittest для проверки примерного равенства двух значений в Python.

Введение в метод AssertAlmostEqual() в Python

 Функция AssertAlmostEqual() проверяет, приблизительно ли равны два значения, выполнив следующие действия:

  • Сначала вычислить разницу.
  • Во-вторых, округлить до заданного числа до десятичных знаков(по умолчанию 7).
  • В-третьих, сравнить округленное значение с нулем.

Ниже показан синтаксис метода AssertAlmostEqual():

assertAlmostEqual(first, second, places=7, msg=None, delta=None)

Он использует следующую проверку:

round(first-second, 7) == 0

Этот метод использует знаки(или десятичные знаки) для округления разницы перед сравнением ее с нулем. Обратите внимание, что places не являются значащими цифрами.

Если вы передаете delta вместо places, то разница между первым и вторым должна быть меньше или равна(или больше) delta.

Метод AssertAlmostEqual() позволяет использовать либо places, либо delta. Если вы попытаетесь передать оба аргумента, вы получите TypeError.

Пример метода Python AssertAlmostEqual

  • Сначала определите функцию area(), которая вычисляет площадь круга в файле Circle.py:
import math


def area(radius: float) -> float:
    return math.pi * math.pow(radius, 2)

Функция area() принимает радиус в виде числа с плавающей запятой и возвращает площадь круга в виде числа с плавающей запятой.

Поскольку Python может представлять числа с плавающей запятой только приблизительно, вам необходимо использовать метод AssertAlmostEqual() для проверки результата area() с другим числом с плавающей запятой.

Например, следующий тест, использующий метод AssertEqual(), завершится неудачей:

self.assertEqual(0.1+0.1+0.1, 0.3)

Однако следующий тест, использующий метод AssertAlmostEqual(), пройдет успешно:

self.assertAlmostEqual(0.1+0.1+0.1, 0.3)
  • Во-вторых, определите тестовый модуль test_circle.py и импортируйте модуль Circle.py:
import unittest
from circle import area
from math import pi


class TestCircle(unittest.TestCase):
    def test_area(self):
        self.assertAlmostEqual(area(0), 0)
        self.assertAlmostEqual(area(1), pi)
        self.assertAlmostEqual(area(0.1), pi*0.1*0.1)

Как это работает:

  • Сначала определите класс TestCircle, который наследует класс TestCase.
  • Во-вторых, добавьте тестовый метод test_area() в класс TestCircle.
  • В-третьих, используйте метод AssertAlmostEqual(), чтобы проверить, равен ли результат функции area() почти 0, pi и pi * 0,1 * 0,1.

В-третьих, запустите тест:

python -m unittest -v

Выход:

test_area(test_circle.TestCircle) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Метод Python AssertNotAlmostEqual()

Метод AssertNotAlmostEqual() является противоположностью метода AssertAlmostEqual(). Он проверяет, не равны ли примерно два значения.

Оцените статью
Справочник Python