Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problemas en el test 03 #456

Closed
4 tasks done
JMCChen opened this issue Oct 4, 2024 · 6 comments
Closed
4 tasks done

Problemas en el test 03 #456

JMCChen opened this issue Oct 4, 2024 · 6 comments
Assignees
Labels
Tarea 3 Dudas sobre la T3

Comments

@JMCChen
Copy link

JMCChen commented Oct 4, 2024

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Al correr los test de la consulta 03 me aparece un error que no se que significa. Adjunto imagen del error
image

@JMCChen JMCChen added the Tarea 3 Dudas sobre la T3 label Oct 4, 2024
@NachoRinda NachoRinda self-assigned this Oct 4, 2024
@NachoRinda
Copy link

NachoRinda commented Oct 4, 2024

Hola, la estructura del error te indica de abajo hacia arriba desde dónde partió el error hasta cuáles procesos se cortaron debido a este. Específicamente, este test te dice que hubo un AssertionError en el llamado a la función AssertionTrue() de la línea 75, y eso acabo con los procesos de arriba ("result[0]" es de una función timeout que evalúa que tu código corra en un tiempo acotado, como saltó error entonces este proceso que cronometra tu código también fue cortado).
Ahora bien, si quieres saber que está haciendo realmente AssertionTrue() puedes ver tu mismo el código de test en tests_publicos/ que es en dónde se encuentran todos.
Entrando en <test_03_pedido_con_mayor_descuento_utilizado_correctitud.py> puedes ver que la estructura de los tests es:

def test_0(self):
    ContenidoPedido = namedtuple(...)

    lista_entregada = [....]

    generador_entregado = (pedido for pedido in lista_entregada)

    resultado_estudiante = pedido_con_mayor_descuento_utilizado(generador_entregado)

    self.assertIsInstance(resultado_estudiante, (Iterable))

    resultado_estudiante = list(resultado_estudiante)

    resultado_esperado = [...]

    self.assertTrue(all(elem in resultado_estudiante for elem in resultado_esperado))

Los assertion son las pruebas que se le hace a tu código para comprobar que funcione bien y verifican exactamente lo que dice su nombre. Por ejemplo, AssertIsInstance verifica que de los argumentos que le entregas uno sea instancia del otro (en este caso que tu retorno de la función <resultado_estudiante> sea Iterable).
Por otro lado, AssertTrue verifica que lo que le entregas sea lógicamente verdad (True). En particular, el test le entrega <all(elem in resultado_estudiante for elem in resultado_esperado)>, esto lo que hace es verificar que todo elemento que esté dentro de la solución esperada se encuentra también en el retorno que entrega tu función.
Ya que es falso, esto significa que no todos los elementos de la solución están en tu iterable retornado. En el contexto de la tarea, hay pedidos con el mayor descuento que no estás devolviendo y deberías hacerlo.

Si tienes más dudas o no te quedo claro no dudes en volver a preguntar por acá mismo.

@DiegoRODestudiante
Copy link

Y qué pasa si estoy seguro de que si los está devolviendo pero me sigue saliendo false? Por lógica del código que hice es evidente que si considera todos pero sigue saliendo que false is not true

@NachoRinda
Copy link

Si estás seguro de que sigues la lógica que tienes en mente, tal vez tu problema sea que entendiste mal el enunciado. Tampoco has subido nada a tu repositorio por lo que no puedo ver lo que llevas hecho como para ayudarte.

@DiegoRODestudiante
Copy link

Pero se supone que tiene que ser un iterable con los que tengan el mayor descuento no? En caso de ser uno solo o en caso de ser más de uno se siguen retornando en el iterable, ya pushee por cierto

@NachoRinda
Copy link

Entendiste bien el enunciado, tu problema es que estás usando el generador más de una vez, por lo tanto, después de su primer uso se consume y terminas retornando un iterable vacío.

@DiegoRODestudiante
Copy link

No entiendo como sacar el máximo sin usar dos veces el generador, lo intente infinitas formas pero siempre terminaba usando 2 porque las otras no funcionan, porque no puedo comparar los descuentos sin tener el máximo, y para sacar el máximo tenia que sacar los descuentos sí o sí

@3rdPix 3rdPix closed this as completed Nov 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

4 participants