Questão nº 53
Questão de Testes de Software · FCC TRT6 2025 (nº 53)
Considere o método buscar_caso, a seguir, de uma classe Python chamada TribunalTrabalhista.
```python
def buscar_caso(self, numero_processo):
return self.casos.get(numero_processo, "Caso não encontrado.")
```
Para testar esse método, em um arquivo test_tribunal_trabalhista.py, em condições ideais, com a biblioteca pytest importada, considerando tribunal uma instância obtida corretamente da classe TribunalTrabalhista, pode ser usada a instrução:
- A
assert tribunal.buscar_caso(1) == "Caso encontrado" - B
assert tribunal.buscar_caso("999") == "Caso não encontrado"(alternativa correta) - C
assert tribunal.buscar_caso(0, "9999") == "Caso não encontrado" - D
pytest tribunal.buscar_caso("1") == "Caso Encontrado" - E
call tribunal.buscar_caso("0") == "Caso não encontrado"
Resposta comentada
Gabarito Alternativa B
O conceito-chave do teste unitário é verificar se uma pequena parte do código (como um método) funciona exatamente como esperado, isoladamente. Para um método que busca algo, é fundamental testar tanto quando o item é encontrado quanto quando não é encontrado, para garantir que ele retorne o valor correto em ambas as situações.
(A) Incorreta: O método `buscar_caso` retornaria o dado do caso se encontrado, não a string genérica `"Caso encontrado"`. Se o caso `1` não fosse encontrado, retornaria `"Caso não encontrado."`.
(B) Correta: Esta instrução testa corretamente o cenário em que um `numero_processo` (aqui, `"999"`) não é encontrado no dicionário `self.casos`. De acordo com a definição do método (`self.casos.get(numero_processo, "Caso não encontrado.")`), se a chave não existir, ele deve retornar a string padrão `"Caso não encontrado."`, o que é exatamente o que a asserção verifica.
(C) Incorreta: O método `buscar_caso` aceita apenas um argumento (`numero_processo`) além de `self`. Chamar com dois argumentos (`0, "9999"`) resultaria em um erro de tipo (`TypeError`). Esta é a armadilha mais tentadora para iniciantes, que podem confundir o segundo argumento com um valor padrão para a busca, mas ele está sendo passado para o método `buscar_caso` e não para o `get` interno.
(D) Incorreta: `pytest` é o framework de teste, não uma função a ser chamada diretamente na asserção. As asserções no `pytest` são feitas com a palavra-chave `assert` padrão do Python.
(E) Incorreta: `call` não é uma palavra-chave Python ou uma função padrão do `pytest` para realizar asserções. A sintaxe está incorreta para um teste.
Fonte: FCC TRT6 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 005). Reproduzida para fins de estudo.