Bonjour à tous,

Je viens de me poser une question très bête... et je n'ai aucun élément de réponse (je n'ai pas envie de faire un subprocess et tout le tralala...).

Imaginez que vous ayez 30 fois le même tp à corriger. Pourquoi ne pas le faire automatiquement avec des tests unitaires ?

Oui..., mais si l'un des étudiants à fait une boucle infini dans sa fonction que l'on est en train de tester ???

Autrement dis :
comment interrompre un test, dans une série de test, si celui-ci est trop long (disons > 10s) pour se finir ???

La situation typique serait la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
def fonction_a_tester(n):
    while 1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
import unittest
 
from ... import fonction_a_tester
 
class TestFonctionATester(unittest.TestCase):
    def test_infini(self):
        self.assertEqual(fonction_a_tester(1), 1,
                              msg = "fonction_a_tester(1) ne renvois pas le bon resultat")
 
if __name__ == '__main__':
    unittest.main
Comment feriez vous pour faire échouer test_infini rapidement avec une exception de type TimeError ?

Milles mercis pour votre aide,