Módulo 16 - Projeto final: mini biblioteca de utilidades

Testes com pytest, empacotamento e encerramento

11 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Escrever testes com pytest para os modelos e a lógica de preço.
  • Testar o caminho feliz e os casos de erro com pytest.raises.
  • Preparar o empacotamento da biblioteca no pyproject.toml.
  • Fechar o curso com um balanço honesto, exame e certificado.

Empacotando a biblioteca

Com a biblioteca escrita e testada, o passo final de engenharia é empacotá-la, para que outras pessoas possam instalá-la e importá-la. Aqui entra o pyproject.toml do módulo anterior, agora preenchido com os metadados do catalogo: nome, versão, descrição e a versão mínima de Python. Com esse arquivo e a estrutura src correta, uma ferramenta de build gera o pacote instalável. Você não precisa decorar os comandos; o que importa é entender que o pyproject.toml é o que transforma uma pasta de código num pacote que o mundo pode usar.

# pyproject.toml do projeto catalogo
[project]
name = "catalogo"
version = "0.1.0"
description = "Mini biblioteca de utilidades para catalogo de produtos"
readme = "README.md"
requires-python = ">=3.10"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

# Com isso, uma ferramenta de build gera o pacote instalavel a partir de src/.

O pyproject.toml final: metadados do catalogo e o sistema de build que gera o pacote.

O que você conquistou

Vale parar e olhar para trás com honestidade. Ao terminar este curso, você não escreve mais só scripts que funcionam; você projeta software. Passou pela tipagem estática e pelas dataclasses, pela programação funcional, pelos decoradores e context managers, pelos geradores avançados, pela concorrência e pelo async, pela orientação a objetos com metaclasses e descritores, pelas exceções e logging, pelos testes com pytest, pela performance e pelo empacotamento. E fechou com um projeto que junta tudo numa biblioteca coesa, tipada e testada. Isso é base de engenharia de verdade, construída peça por peça.

Seja honesto também sobre o que vem a seguir. Este curso te deu uma base avançada sólida, não um ponto final. Programar é um ofício que se aprofunda com prática: projetos próprios, leitura de código de outras pessoas, contribuição a bibliotecas abertas, e o estudo contínuo de temas que cada área pede, como bancos de dados, web ou dados. Não existe curso que entregue emprego pronto, e desconfie de quem promete isso. O que existe é o degrau que você acabou de subir, real e seu, e a estrada aberta para continuar. O melhor programador que você vai conhecer é o que você será depois de muitos projetos.

Quando você começou

  • Escrevia scripts que funcionavam
  • Tratava o erro que aparecia
  • Testava o caminho principal na mão
  • Organizava o código como dava

Agora

  • Projeta software com contratos tipados
  • Desenha a hierarquia de erros de propósito
  • Cobre acertos e falhas com pytest
  • Estrutura pacotes com responsabilidades claras

Para fechar oficialmente, faça o exame final do curso, que sorteia questões de todos os módulos e mede se os conceitos ficaram. Ao ser aprovado, você recebe o certificado do ValorFinal, com carga horária e verificação, que registra o seu esforço. Ele não é um passe mágico, e sim o reconhecimento de um caminho concluído com seriedade. Guarde o pacote catalogo, expanda-o, adapte-o a outro domínio. Ele é a prova, para você mesmo, de que a mentalidade de engenharia agora é sua. Parabéns por chegar até aqui, e boa jornada no que vem depois.

Teste rápido

Por que testar também os casos de erro, e não só o caminho feliz?

Perguntas frequentes

Como o pytest sabe quais funções são testes?
Por convenção de nomes. O pytest procura arquivos que começam com test_ e, dentro deles, funções que também começam com test_. Cada uma é um teste, que passa se os assert derem certo e falha se algum falhar ou se uma exceção inesperada acontecer. É simples e sem cerimônia.
Como testo que uma função levanta uma exceção?
Com o pytest.raises, usado em um bloco with que envolve a chamada. O teste passa se a exceção esperada acontecer dentro do bloco e falha se ela não acontecer. É a forma correta de verificar que o código falha do jeito certo diante de entradas inválidas.
Preciso publicar o pacote em algum repositório?
Não para concluir o curso. Empacotar já demonstra o ciclo completo: com o pyproject.toml e a estrutura correta, o pacote pode ser gerado e instalado localmente. Publicar num índice público é um passo extra, opcional, que segue as mesmas ferramentas quando você quiser compartilhar a biblioteca.
O certificado do curso garante um emprego?
Não, e nenhum certificado sério promete isso. Ele reconhece que você concluiu o curso e passou no exame, o que é real e valioso. Conseguir uma vaga envolve prática, projetos próprios, portfólio e outras etapas. O certificado é uma peça honesta desse caminho, não um atalho para o fim dele.
O que estudar depois deste curso?
Depende da área que te atrai. Caminhos comuns são bancos de dados e SQL, desenvolvimento web com um framework, ou análise de dados. Em todos, o maior avanço vem da prática: construir projetos próprios, ler código de outras pessoas e resolver problemas reais. A base avançada que você tem agora sustenta qualquer um desses rumos.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.