El siguiente código se usa para ejecutar doctests en una aplicación de Google App Engine. ¿Cómo harías esto para las pruebas escritas como pruebas unitarias en lugar de como docámenes?En Python, ¿cómo se ejecutan programáticamente las pruebas unitarias almacenadas en una cadena?
#The solution and tests are untrusted code passed in to the GAE app.
solution = 'b=5'
unittest = 'assertEqual(b, 5)'
#Here is the doctest version as a reference.
solution = 'b=5'
doctest = '>>> b \n 5'
#Compile and exec the untrusted solution provided by the user.
compiled = compile(solution, 'submitted code', 'exec')
sandbox = {}
exec compiled in sandbox
#Compile and exec each of the doctests
test_cases = doctest.DocTestParser().get_examples(doctest)
for test in test_cases:
if not test.want:
exec test.source in sandbox
La frase "doctests written as unittests" realmente no tiene ningún sentido. Es doctests o no? –
Lennart, estamos creando todos nuestros problemas con doctests hoy. Ahora estamos viendo cómo ofrecer la opción de crear problemas en el formato de prueba de Python en lugar del formato doctest. De esta forma, un profesor podría ingresar algo como 'self.assertEqual (b, 5)' en lugar de '>>> b \ n 5 'como una prueba que debe pasar la solución de un estudiante. – Chris