Функция AssertAlmostEqual() модуля unittest в Python
AssertAlmostEqual() — это метод класса TestCase модуля unittest для проверки примерного равенства двух значений в Python.
- Введение в метод AssertAlmostEqual() в Python
- Пример метода Python AssertAlmostEqual
- Метод Python AssertNotAlmostEqual()
Введение в метод 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(). Он проверяет, не равны ли примерно два значения.