Unit test to grade input/output beginner exercises
reingart opened this issue · 1 comments
reingart commented
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
Hey, I would like to work to this issue please assign this issue to me.