1
resposta

Dúvida a respeito de fixtures

Olá a todos!

Eu tentei utilizar fixtures dentro do projeto realizado no curso, alguém poderia me dizer se o uso está correto? Eu não entendi muito bem o conceito das fixtures, seria apenas para gerenciar os cenários que vão servir de plano de fundo para o teste, de forma dinâmica?

class TestClass:

    @pytest.fixture
    def funcionario(self):
        return Funcionario("Lucas Carvalho", "13/03/2000", 1000)

    @pytest.fixture
    def socio(self):
        return Funcionario("Paulo Bragança", "10/10/1980", 100000)

    def test_quando_idade_recebe_13_03_2000_deve_retornar_22(self, funcionario):
        esperado = 22
        resultado = funcionario.idade()

        assert resultado == esperado

    def test_quando_sobrenome_recebe_Lucas_Carvalho_deve_retornar_Carvalho(self, funcionario):
        esperado = "Carvalho"
        resultado = funcionario.sobrenome()

        assert resultado == esperado

    def test_quando_decresimo_salario_recebe_100000_deve_retornar_90000(self, socio):
        esperado = 90000

        socio.decresimo_salario()
        resultado = socio.salario

        assert resultado == esperado

    @mark.calcular_bonus
    def test_quando_calcular_bonus_recebe_1000_deve_retornar_100(self, funcionario):
        esperado = 100
        resultado = funcionario.calcular_bonus()

        assert  resultado == esperado

    @mark.calcular_bonus
    def test_quando_calcular_bonus_recebe_1000000_deve_retornar_exception(self, socio):
        with pytest.raises(Exception):
            resultado = socio.calcular_bonus()

            assert resultado
1 resposta

Olá Marcos, tudo bem com você?

Peço desculpas pela demora em lhe responder.

O uso das fixtures no projeto estar correto. As fixtures funcionario e socio cria instâncias da classe Funcionario que serão usadas em vários testes. Essa abordagem ajuda a evitar duplicação de código e a tornar os testes mais legíveis e fáceis de entender.

As fixtures são funções que fornecem dados ou objetos necessários para executar um teste. Elas ajudam a evitar repetições de código e tornam os testes mais legíveis e fáceis de entender.

Um exemplo de fixture pode ser uma função que retorna um número inteiro:

import pytest

@pytest.fixture
def numero():
    return 42

Essa fixture pode ser usada em um teste para verificar se o número é igual a 42:

def test_numero_eh_42(numero):
    assert numero == 42

Resultado

tests/test_forum.py::test_numero_eh_42 PASSED                                                                                                                                    [100%]

No teste apresentado a cima, a fixture numero é usada como argumento da função test_numero_eh_42. Quando o teste é executado, a fixture é chamada automaticamente para fornecer o valor 42. Isso garante que o teste seja executado em um ambiente consistente e isolado.

Além disso, as fixtures podem ser usadas para configurar ambientes mais complexos, como bancos de dados ou servidores. Elas permitem que os testes sejam executados em diferentes cenários e configurações para garantir que o software seja testado em diferentes situações.

Gostaria de aproveitar a oportunidade e deixar uma recomendação de leitura. Na Alura temos o artigo abaixo que aborda com detalhes sobre o uso da fixture nos testes usando o pytest.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!