Функция 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(). Он проверяет, не равны ли примерно два значения.

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *