Resumo
Neste módulo, você explorou recursos de teste pytest que ajudam você a escrever testes mais expressivos e mantêveis. Você usou @pytest.mark.parametrize para executar a mesma função de teste com vários valores de entrada. O Pytest coleta cada parâmetro definido como um caso de teste separado, para que os relatórios possam identificar exatamente qual entrada passou ou falhou.
Você também trabalhou com acessórios. Os acessórios fornecem código de configuração reutilizável, tornam explícitas as dependências de teste por meio de argumentos de função e podem gerenciar a limpeza usando a desativação baseada em yield e os escopos de acessórios apropriados. Você aplicou essas ideias escrevendo testes parametrizados e refatorando um teste baseado em classe do estilo xUnit setup_method() e da abordagem teardown_method() a um acessório personalizado que usa o acessório tmp_path do pytest para gerenciamento temporário de arquivos. Você também analisou os acessórios internos, incluindo tmp_path, que fornece um diretório temporário pathlib.Path para cada invocação de função de teste, e monkeypatch, que altera temporariamente atributos, valores de dicionário, variáveis de ambiente, sys.path ou o diretório de trabalho atual e restaura essas alterações após o término do teste ou acessório solicitado.
Agora você pode:
- Use a parametrização para cobrir várias entradas sem repetir funções de teste.
- Leia a saída do pytest para diagnosticar quais valores de parâmetro passam ou falham.
- Crie acessórios personalizados para compartilhar a lógica de instalação e limpeza.
- Escolha escopos de instalação com base na frequência com que a instalação deve ser executada e quando a limpeza deve ocorrer.
- Coloque os acessórios compartilhados em
conftest.pypara que os testes no mesmo diretório e em seus subdiretórios possam solicitá-los sem importações explícitas. - Use recursos internos, incluindo
tmp_pathpara arquivos temporários emonkeypatchpara alterações de estado com escopo limitado, para isolar testes que dependem de arquivos, variáveis de ambiente, importações ou estado externo.
Para obter mais informações, consulte a documentação pytest para parametrizar testes, acessórios, acessórios internos, diretórios e arquivos temporários, configuração no estilo xUnit e monkeypatch.