class Bhaskara:
def delta(self, a, b, c):
return b ** 2 - 4 * a * c
def main(self):
a_digitado = float(input("Digite o valor de a: "))
b_digitado = float(input("Digite o valor de b: "))
c_digitado = float(input("Digite o valor de c: "))
print(self.calcula_raizes(a_digitado, b_digitado, c_digitado))
def calcula_raizes(self, a, b, c):
d = self.delta(a, b, c)
if d == 0:
raiz1 = (-b + math.sqrt(d)) / (2 * a)
return 1, raiz1
else:
if d < 0:
return 0
else:
raiz1 = (-b + math.sqrt(d)) / (2 * a)
raiz2 = (-b - math.sqrt(d)) / (2 * a)
return 2, raiz1, raiz2
Minha dúvida é: existe uma razão para usar essa função fixture do pytest? É uma fatoração melhor? Porque eu pensei em simplesmente fazer os testes dessa forma:
Pergunta
Angelo314
Olá, fiquei com uma dúvida em uma aula de programação.
Para contextualizar: o professor escreveu um módulo chamado Bhaskara que possui uma função que calcula raízes de uma equação do segundo grau.
___________________________________________________________________________________________________
Aqui está o módulo Bhaskara:
import math
class Bhaskara:
def delta(self, a, b, c):
return b ** 2 - 4 * a * c
def main(self):
a_digitado = float(input("Digite o valor de a: "))
b_digitado = float(input("Digite o valor de b: "))
c_digitado = float(input("Digite o valor de c: "))
print(self.calcula_raizes(a_digitado, b_digitado, c_digitado))
def calcula_raizes(self, a, b, c):
d = self.delta(a, b, c)
if d == 0:
raiz1 = (-b + math.sqrt(d)) / (2 * a)
return 1, raiz1
else:
if d < 0:
return 0
else:
raiz1 = (-b + math.sqrt(d)) / (2 * a)
raiz2 = (-b - math.sqrt(d)) / (2 * a)
return 2, raiz1, raiz2
___________________________________________________________________________________________________
E aqui está uma bateria de testes do módulo Bhaskara, também escrita pelo professor:
import Bhaskara
import pytest
class TestBhaskara:
@pytest.fixture
def b(self):
return Bhaskara.Bhaskara()
def testa_uma_raiz(self, b):
assert b.calcula_raizes(1, 0, 0) == (1, 0)
def testa_duas_raizes(self, b):
assert b.calcula_raizes(1, -5, 6) == (2, 3, 2)
def testa_zero_raizes(self, b):
assert b.calcula_raizes(10, 10, 10) == 0
def testa_raiz_negativa(self, b):
assert b.calcula_raizes(10, 20, 10) == (1, -1)
___________________________________________________________________________________________________
Minha dúvida é: existe uma razão para usar essa função fixture do pytest? É uma fatoração melhor? Porque eu pensei em simplesmente fazer os testes dessa forma:
import Bhaskara
import pytest
b = Bhaskara.Bhaskara()
class TestBhaskara:
def testa_uma_raiz(self):
assert b.calcula_raizes(1, 0, 0) == (1, 0)
def testa_duas_raizes(self):
assert b.calcula_raizes(1, -5, 6) == (2, 3, 2)
def testa_zero_raizes(self):
assert b.calcula_raizes(10, 10, 10) == 0
def testa_raiz_negativa(self):
assert b.calcula_raizes(10, 20, 10) == (1, -1)
Há algum problema em fazer dessa maneira? Afinal, os testes funcionam igualmente.
Agradeço pela atenção, ficarei grato se puder esclarecer isso para mim.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.