1
resposta

Dúvida no contexto da Questão

No exercício o professor descreve o teste como: Se na lista de lances "não" tiver nenhum lance, deve permitir o lance. Mas ao descrever em código, o mesmo coloca um objeto na lista com o metodo self.leilao.proproe(self.lance_do_gui), e o len() de self.leilao.lance retornando 1. Sendo assim realizando uma comparação com valor 1. Não entendi realizar uma comparação com 1 ao invés de 0, já que a verificação é quanto não tiver lances. Código do professor abaixo:

def test_deve_permitir_propor_um_lance_caso_o_leilao_nao_tenha_lances(self):

self.leilao.propoe(self.lance_do_gui)

quantidade_de_lances_recebido = len(self.leilao.lances)

self.assertEqual(1, quantidade_de_lances_recebido)

Estaria errado da seguinte forma, realizando a comparação realmente com 0 (zero):

def test_deve_permitir_propor_um_lance_caso_o_leilao_nao_tenha_lances(self):

quantidade_de_lances_recebido = len(self.leilao.lances)

self.assertEqual(0, quantidade_de_lances_recebido)

Para, aí sim, o teste retornar "OK" quando a lista lances for igual a 0 (zero)

1 resposta

Não, a ideia do professor é que se a lista estiver vazia e você tentar colocar algo ali dentro esse algo vai ser colocado sem problema. testar se uma lista vazia está vazia seria testar se a lista foi criada:

lista = list()

assertEqual(len(lista), 0)

O teste do professor seria, se essa lista está vazia, eu preciso conseguir propor um lance, independente de qual lance for. Esse teste é bom de se fazer porque a partir do momento que a lista tem um item ali dentro você vai precisar testar outra coisa antes de colocar o item, você vai precisar conferir se esse novo item é maior que o ultimo elemento da lista.

# se você tem essa lista
lista = [10, 100, 1000]
# e quer adicionar esse elemento
elemento_novo = 101
# antes de adicionar você precisa checar se o `elemento_novo` > lista[-1]

#já em uma lista vazia você só precisa ter certeza que você conseguiu colocar o elemento ali dentro sem dar erro:
lista = []
lista.append(elemento_novo)
# testa se deu certo, se não deu certo você descobre porque

"a, mas se a lista está vazia vamos sempre conseguir adicionar", não necessáriamente, se você tiver um comparador a um elemento de uma lista sendo aplicado em uma lista vazia você vai ter um erro.

lista = []
elemento_novo = 101
if elemento_novo > lista[-1]:
    lista.append(elemento_novo)
# vai retornar um erro
>>> IndexError: list index out of range

E é sobre esse erro ai que esse teste do professor lida, ele quer saber se na função propoe (def propoe(self, lance: Lance):) eu estou conseguindo propor um lance mesmo se eu tiver uma lista vazia.

Espero que tenha entendido tudo, qualquer coisa só perguntar que eu te ajudo :)