PyAr / PyZombis

Programación Python para Zombis MOOC (código y materiales del curso abierto y masivo en linea)
GNU Affero General Public License v3.0
22 stars 49 forks source link

Unit test to grade input/output beginner exercises #245

Open reingart opened 1 year ago

reingart commented 1 year ago

Initial programs don't use def so they cannot be invoked in unit test to check results programmatically, for example:

https://pyar.github.io/PyZombis/main/lectures/TWP15/TWP15_3.html#algunos-ejercicios

But, we could include hidden code to wrap input and print functions, so later we can evaluate them.

Proof-of-Concept:

# wrap functions to store inputs and outputs
inputs = []
outputs = []

i = input
def input(msg):
    v = i(msg)
    inputs.append(v)
    return v

p = print
def print(v):
    p(v)
    outputs.append(v)

# student code:
n = input("n")
print(int(n) + 2)

# automatic check / grading:
assert not inputs, "your program must read input data"
assert not outputs, "your program must print output results"
assert outputs[0] == int(inputs[0]) + 1, "you must sum 1"

Documentation: https://runestone.academy/ns/books/published/authorguide/directives/activecode.html#incorporating-unit-tests

Ankityd commented 1 year ago

Hey, I would like to work to this issue please assign this issue to me.