S03 - Atividade Guiada de Programação: Testando e Corrigindo Funções
Visão Geral
Para esta atividade, você irá programar enquanto assiste um vídeo do instrutor, que guiará cada passo da tarefa abaixo. Certifique-se de pausar o vídeo ou revisar partes dele, caso necessário, para concluir a atividade por completo.
Seu instrutor publicará um link para o vídeo no Microsoft Teams.
Contexto
A maioria das pessoas ao redor do mundo hoje tem pelo menos dois nomes: um sobrenome e um nome. Geralmente escrevemos o nome de uma pessoa seguido do seu sobrenome. Entretanto, quando um computador lista nomes em ordem alfabética, é conveniente listar primeiro o sobrenome e então o nome, dessa forma:
-
Tavares; Maria
-
Tavares; Oliver
-
Silva; João
-
Silva; Marta
Ao escrever um programa que organiza nomes em ordem alfabética, geralmente é útil ter as três funções a seguir.
-
criar_nome_completo: Combina o nome e o sobrenome de uma pessoa em uma única string, com o sobrenome primeiro. extrair_sobrenome: Extrai o sobrenome de uma pessoa a partir do seu nome completo.extrair_primeiro_nome: Extrai o primeiro nome de uma pessoa a partir do seu nome completo.
Um programador já escreveu essas três funções. Entretanto, há erros em pelo menos duas das três funções.
Programa
Escreva três funções de teste chamadas test_criar_nome_completo, test_extrair_sobrenome, e test_extrair_primeiro_nome. Cada uma das funções de teste testará uma das três funções de programa escritas anteriormente. Use o pytest para executar as funções de teste e encontrar e corrigir os erros, se houver, nas funções de programa.
Requisitos
-
Escreva a função
test_criar_nome_completopara testar a funçãocriar_nome_completousando diferentes tipos de nomes, incluindo nomes longos, nomes curtos e nomes com hífen, e corrija qualquer erro presente na funçãocriar_nome_completo. -
Escreva
test_extrair_sobrenomepara que ele testeextrair_sobrenomecom vários nomes, incluindo nomes longos, nomes curtos e nomes com hífen. -
Escreva
test_extrair_primeiro_nomepara que ele testeextrair_primeiro_nomecom vários nomes, incluindo nomes longos, nomes curtos e nomes com hífen. Corrija o erro na funçãoextrair_primeiro_nome.
Desafios Adicionais
Abaixo está uma lista de desafios adicionais que você pode fazer. Seu instrutor lhe guiará por pelo menos um deles. Fique à vontade para realizar os demais.
-
No Brasil, os endereços postais devem ser escritos desta forma: rua, número, bairro, cidade - estado, CEP
Por exemplo: Av. Centenário, 2200, Mangueirão, Belém - PA, 66640-658Baixe e salve este arquivo Python chamado endereco.py. Abra um novo arquivo Python chamado
test_endereco.pye escreva uma função de teste chamadatest_extrair_cidadeque verifica se a funçãoextrair_cidadefunciona corretamente. -
Escreva uma função de teste chamada
test_extrair_estadoque verifica se a função extrair_estado funciona corretamente. -
Escreva uma função de teste chamada
test_extrair_cep, que verifica se a função extrair_cep funciona corretamente.
Instruções
- Crie uma pasta para armazenar o programa da Atividade Guiada de Programação desta semana.
- Baixe o arquivo python nomes.py e salve-o na pasta do projeto que você acabou de criar.
- Abra a pasta que você acabou de criar no VSCode.
- Encontre o vídeo que seu instrutor publicou para esta tarefa e crie o código junto com ele para concluir cada um dos requisitos. Analise os requisitos em ordem com o instrutor em vez de pular para etapas mais complicadas para garantir que você não perca nenhuma explicação.
Link de Vídeo Alternativo
Além do link que seu instrutor publicou, você também pode assistir ao seguinte passo a passo do código:
Recursos Adicionais
Você pode usar esses recursos adicionais para se aprofundar nos estudos.
Exemplo de Solução
Além do vídeo do instrutor, você também pode visualizar esta solução. (Ela pode ser um pouco diferente do código final que você e seu instrutor criaram.)
Documentação Útil
O vídeo Introdução a Testes Automatizados com Pytest mostra a criação de funções de teste usando opytest para executá-las.
Procedimento de Teste
Antes de corrigir os erros nas funções criar_nome_completo e extrair_primeiro_nome, o pytest imprimirá uma saída semelhante a esta:
> python test_nomes.py ======================= test session starts====================== platform win32 -- Python 3.13.4, pytest-8.4.1, pluggy-1.6.0 -- rootdir: C:\Users\cse111\week03 collected 3 itens test_nomes.py::test_criar_nome_completo FAILED [ 33%] test_nomes.py::test_extrair_sobrenome PASSED [ 66%] test_nomes.py::test_extrair_primeiro_nome FAILED [100%] ========================== FAILURES ============================ C:\Users\cse111\early-functions\docs\week03\teach_solution.py: AssertionError: assert 'Lopes-João;Ava' == 'Lopes-João; Ava' C:\Users\cse111\early-functions\docs\week03\nomes.py:31: ValueError: substring not found ================= 2 failed, 1 passed in 0.14s ==================
Após corrigir os erros nas funções criar_nome_completo e extrair_primeiro_nome, o pytest imprimirá uma saída semelhante a esta:
> python test_nomes.py ======================= test session starts====================== platform win32 -- Python 3.13.4, pytest-8.4.1, pluggy-1.6.0 -- rootdir: C:\Users\cse111\week03 collected 3 itens test_nomes.py::test_criar_nome_completo PASSED [ 33%] test_nomes.py::test_extrair_sobrenome PASSED [ 66%] test_nomes.py::test_extrair_primeiro_nome PASSED [100%] ====================== 3 passed in 0.12s =======================
Gráfico de Chamadas
O gráfico de chamadas a seguir mostra as chamadas e retornos de função no exemplo de solução para esta tarefa. Neste gráfico de chamadas, vemos que o computador começa a executar o funções de teste de exemplo chamando a função pytest.main. Ao executar a função pytest.main, o computador chama a função test_criar_nome_completo, que chama a função criar_nome_completo. Então, enquanto ainda executa pytest.main, o computador chama a função test_extrair_sobrenome, que chama a função extrair_sobrenome. Então, enquanto ainda executa pytest.main, o computador chama a função test_extrair_primeiro_nome, que chama a função extrair_primeiro_nome.
Envio
Por favor, pause e assista novamente a quaisquer partes do vídeo do instrutor necessárias até que você tenha concluído toda a atividade e seu programa funcione da mesma forma que o do instrutor. Quando tiver terminado:
- Volte ao Canvas para responder o questionário.
Links Úteis:
- Voltar para: Visão Geral da Semana | Página Inicial