Resumo : neste tutorial, você aprende como usar o assertAlmostEqual()
método Python para testar se dois valores são aproximadamente iguais.
Introdução ao método Python assertAlmostEqual()
O
é um método da assertAlmostEqual()
TestCase
classe do unittest
módulo. O
teste se dois valores são aproximadamente iguais fazendo o seguinte:assertAlmostEqual()
- Primeiro, calcule a diferença.
- Segundo, arredonde para o número fornecido com casas decimais (padrão 7)
- Terceiro, compare o valor arredondado com zero.
O seguinte mostra a sintaxe do assertAlmostEqual()
método:
assertAlmostEqual(first, second, places=7, msg=None, delta=None)
Linguagem de código: Python ( python )
Ele usa a seguinte verificação:
round(first-second, 7) == 0
Linguagem de código: Python ( python )
O método usa casas (ou casas decimais) para arredondar a diferença antes de compará-la com zero. Observe que as casas não são algarismos significativos.
Se você passar a delta
em vez de places
, a diferença entre o primeiro e o segundo deverá ser menor ou igual (ou maior que) delta.
O assertAlmostEqual()
método permite usar lugares ou delta. Se você tentar passar os dois argumentos, receberá um arquivo TypeError
.
Exemplo do método python assertAlmostEqual
Primeiro, defina uma função area()
que calcule a área de um círculo no circle.py
arquivo:
import math
def area(radius: float) -> float:
return math.pi * math.pow(radius, 2)
Linguagem de código: Python ( python )
A area()
função aceita um raio como ponto flutuante e retorna a área do círculo como ponto flutuante.
Como o Python só pode representar floats aproximadamente , você precisa usar o assertAlmostEqual()
método para testar o resultado de area()
com outro float.
Por exemplo, o teste a seguir que usa o assertEqual()
método falhará:
self.assertEqual(0.1+0.1+0.1, 0.3)
Linguagem de código: Python ( python )
No entanto, o seguinte teste que usa o assertAlmostEqual()
método será aprovado:
self.assertAlmostEqual(0.1+0.1+0.1, 0.3)
Linguagem de código: Python ( python )
Segundo, defina um módulo de teste test_circle.py
e importe o circle.py
módulo:
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)
Linguagem de código: Python ( python )
Como funciona:
- Primeiro, defina uma
TestCircle
classe que herde aTestCase
classe - Segundo, adicione o
test_area()
método de teste àTestCircle
classe. - Terceiro, use o
assertAlmostEqual()
método para testar se o resultado daarea()
função é quase igual a0
,,pi
epi * 0.1 * 0.1
.
Terceiro, execute o teste:
python -m unittest -v
Linguagem de código: Python ( python )
Saída:
test_area (test_circle.TestCircle) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Linguagem de código: Python ( python )
Método Python assertNotAlmostEqual()
O assertNotAlmostEqual()
método é o oposto do assertAlmostEqual()
método. Ele testa se dois valores não são aproximadamente iguais.
Resumo
- Use o método Python
assertAlmostEqual()
para testar se dois valores são aproximadamente iguais.