Ir para conteúdo
Fórum Script Brasil
  • 0

pytest em Python


Angelo314

Pergunta

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.

 

Editado por Angelo314
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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...