GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Dúvida com pytest

python
Tags: #<Tag:0x00007fb01bcb5bd8>

#1

Estou testando uma classe de Bhaskara com pytest e está me retornando um erro, não estou conseguindo identificar. Obrigado

Classe Bhaskara

import math

class Bhaskara:
    def delta(self, a, b, c):
        return b ** 2 - 4 * a * c

    def main(self):
        a = float(input('Digite o valor de A: '))
        b = float(input('Digite o valor de B: '))
        c = float(input('Digite o valor de C: '))
        print(self.calcula_raizes(a, b, c))

    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

Classe Test_Bhaskara

import Bhaskara
import pytest

class Test_Bhaskara:

    @pytest.fixture
    def b(self):
        return Bhaskara.Bhaskara()
        
    @pytest.mark.parametrize("entrada, saida", [
                ((1, 0, 0), (1, 0,)),
                ((1, -5, 6), (2, 3, 2)),
                ((10, 10, 10), (0,)),
                ((10, 20, 10), (1, -1))
            ])
        
    def testa_bhaskara(self, entrada, saida):
        assert self.b.calcula_raizes(entrada) == saida

Saída do pytest

___ Test_Bhaskara.testa_bhaskara[entrada3-saida3] ___

self = <Test_Bhaskara.Test_Bhaskara instance at 0x7f41be4d2950>
entrada = (10, 20, 10), saida = (1, -1)

    @pytest.mark.parametrize("entrada, saida", [
                ((1, 0, 0), (1, 0,)),
                ((1, -5, 6), (2, 3, 2)),
                ((10, 10, 10), (0,)),
                ((10, 20, 10), (1, -1))
            ])
    
    def testa_bhaskara(self, entrada, saida):
>       assert self.b.calcula_raizes111(entrada) == saida
E       AttributeError: 'function' object has no attribute 'calcula_raizes'

Test_Bhaskara.py:18: AttributeError

=== 4 failed in 0.04 seconds ===