Des tests de non régression pour les exercices

Les propositions de correctifs ou d'exercices pour Pyromaths.

Modérateur: Développeurs

Des tests de non régression pour les exercices

Messagede spalax » Sam 22 Nov 2014, 11:14

Salut,
j'ai fait une proposition pour intégrer des tests de non régression pour les exercices. J'ai fait en sorte que ça soit aussi simple que possible d'ajouter un test à un exercice. C'est dans la branche unittests. L'exercice sixieme.arrondi contient un exemple de test.

Le principe : à chaque exercice (c'est-à-dire chaque classe de type TexExercise), on peut ajouter un attribut tests, qui est un dictionnaire, dont les clefs sont des entiers, et les valeurs des dictionnaires, eux-même ayant pour clef tex_statement et tex_answer, et les valeurs des chaînes de caractères. Par exemple :
tests = {
0: {
'tex_statement': textwrap.dedent(ur"""
\exercice
\begin{enumerate}
\item Arrondir 845\,987 à la dizaine par défaut.
\item Arrondir 4\,263,73 au dixième par défaut.
\item Arrondir 51,616\,4 au millième par défaut.
\item Arrondir 78,596\,3 au millième.
\end{enumerate}
"""),
'tex_answer': textwrap.dedent(ur"""
\exercice*
\begin{enumerate}
\item L'encadrement de 845\,987 à la dizaine est :\par
845\,980 < 845\,987 < 845\,990\par
On en déduit que son arrondi à la dizaine par défaut est : 845\,980.
\item L'encadrement de 4\,263,73 au dixième est :\par
4\,263,7 < 4\,263,73 < 4\,263,8\par
On en déduit que son arrondi au dixième par défaut est : 4\,263,7.
\item L'encadrement de 51,616\,4 au millième est :\par
51,616 < 51,616\,4 < 51,617\par
On en déduit que son arrondi au millième par défaut est : 51,616.
\item L'encadrement de 78,596\,3 au millième est :\par
78,596 < 78,596\,3 < 78,597\par
On en déduit que son arrondi au millième est : 78,596.
\end{enumerate}
"""),
}
}


La signification (sur l'exemple) est : lorsque la graine du générateur aléatoire est 0 (random.seed(0)), alors l'énoncé est la valeur contenue dans tests[0]['tex_statement'], et la solution dans tests[0]['tex_answer']


Ensuite, l'ensemble des tests peut être lancé par la commande python -m unittest discover (n'importe où dans les sources Python) :

$ python -m unittest discover --verbose
runTest (pyromaths.ex.test.pyromaths.ex.sixiemes.arrondi.ArrondirNombreDecimal.tests[0]) ... ok
runTest (pyromaths.ex.test.pyromaths.ex.sixiemes.arrondi.ArrondirNombreDecimal.tests[0]) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.002s

OK


Les tests apparaissent deux fois. Un de ces jours, je regarderai pourquoi la fonction load(), appelée depuis test.py, renvoie les classes en double, mais pas quand elle est appelée lorqu'on lance pyromaths…

Un problème que je vois à cette manière de faire est que les tests sont sensibles au caractère près. Je suis tout nouveau dans le projet, donc je ne sais pas à quelle fréquence ça arrive, mais si on change une virgule dans la sortie d'un module utilisé par Pyromaths, il faut changer tous les tests qui utilisent ça.

Voilà. Je vous laisse commenter...

-- Louis
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Sam 22 Nov 2014, 11:43

Salut Louis,
c'est très intéressant en effet. J'ai commencé à insérer des tests, mais seulement dans les classes et outils dont j'ai fait la doc. Cela permet de vérifier que les modifications faites à un bout de code ne change pas la façon dont pyromaths calcule la somme de deux fractions.
Pour les exercices, ça peut être pratique aussi. En modifiant une classe, on pourra savoir si les exercices donnent toujours la même solution, ce qui n'est pas négligeable.
Aurais-tu un moyen d'automatiser la création de ces dictionnaires ? Combien de "seeds" seraient bénéfiques pour que les tests soient plutôt fiables ?
Merci Louis pour cette contribution.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede spalax » Sam 22 Nov 2014, 13:32

Jérôme a écrit:J'ai commencé à insérer des tests, mais seulement dans les classes et outils dont j'ai fait la doc. Cela permet de vérifier que les modifications faites à un bout de code ne change pas la façon dont pyromaths calcule la somme de deux fractions.

J'ai vu les doctests. Il faudrait faire en sorte qu'unittest les recherche et les vérifie, comme ça, un python -m unittest discover ferait tous les tests. Nose permet de faire ce genre de choses, mais (après essais et recherche rapide) : nose ne gère pas le protocole load_tests() (que j'utilise pour créer les tests pour tous les exercices qui en ont), et nose2 ne gère pas (ou alors je n'ai pas réussi) les doctests.

Jérôme a écrit:Pour les exercices, ça peut être pratique aussi. En modifiant une classe, on pourra savoir si les exercices donnent toujours la même solution, ce qui n'est pas négligeable.
Aurais-tu un moyen d'automatiser la création de ces dictionnaires ?

Je me suis posé la même question : je vois qu'on est sur la même longueur d'onde :)
Si les dictionnaires sont stockés dans la classe comme c'est le cas ici, ça me paraît difficile : ça voudrait dire analyser et modifier des fichiers sources, et je ne suis pas fan.
On pourrait alors convenir d'un autre format : par exemple, étant donné une classe ArrondiNombreDecimal dans le module ex.sixieme.arrondi, on pourrait convenir que le fichier arrondi.test (placé dans le répertoire 'ex.sixieme') est un fichier json contenant les tests sous la forme d'un dictionnaire, les clefs étant d'abord ArrondiNombreDecimal (pour savoir quel exercice tester, au cas où un module contienne plusieurs exercices), puis la graine (seed), puis les résultats (tex_statement et tex_answer). Comme ça, on aurait un fichier plus facilement manipulable, et on pourrait se faire un petit outils "update_test" qui vérifie que les tests passent, et qui pour les échecs, propose de remplacer le test par le résultat actuel (pour mettre à jour les tests).
Pro : Ça permet d'automatiser la création et la mise à jour des tests. Cons : C'est la création et la maintenance d'un outil de plus.

Jérôme a écrit:Combien de "seeds" seraient bénéfiques pour que les tests soient plutôt fiables ?

Je pense qu'une seule est suffisante, puis à chaque fois qu'on trouve un bug dans un exercice (ou à chaque cas spécial d'un exercice), on ajoute le test correspondant.

-- Louis
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Sam 22 Nov 2014, 14:42

Tout cela me parait très bien :)
Cela dit, je ne sais toujours pas ce qu'est un fichier json. :?
Tester les doctest en même temps que les autres, ce n'est pas nécessairement indispensable. À chaque publication de Pyromaths, je refais la doc qui refait les tests. Donc si on peut tout tester facilement, c'est super. Sinon, ce n'est pas grave, dans un premier temps au moins.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede spalax » Sam 22 Nov 2014, 23:59

Voici le fruit de mes réflexions de l'après-midi. Je pense à un utilitaire (disons testexo) dont la fonctionnalité générique est de parcourir les modules à la recherche d'exercices, et de gérer les tests correspondants.

Fonctionnalités
===============

Il aurait les commandes suivantes :

testexo new [EXERCICE]


Crée un nouveau test pour l'exercice considéré. Par « créer », j'entends propose un test, affiche le PDF correspondant, et laisse l'utilisateur valider ou non le test. L'argument EXERCICE est au format "chemin.du.module.Classe", ou "chemin.du.module.Classe:1,4" pour préciser le(s) seed(s) (séparés par des virgules).

testexo delete EXERCICE


Supprime un test pour un exercice.

testexo update [EXERCICE]


Mets à jour les tests dont les résultats ont changé (en montrant le PDF, et en attendant la validation de l'utilisateur).

testexo show EXERCICE


Compile et affiche l'exercice (un peu différent du reste, mais je m'en servirais bien pour visualiser rapidement les exercices que je suis en train de créer).

Format de fichier
=================

Les résultats des tests sont stockés dans un fichier au format JSON, encodé en utf8, avec une extension particulière (par exemple .tpm pour Test PyroMaths). Cela permettra qu'ils soient facilement lisibles et modifiables « à la main », si nécessaire.

Unittest
========

La modification proposée dans la branche unittest, qui permet de tester tous les exercices avec python -m unittest discover est conservée.
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Dim 23 Nov 2014, 00:40

Joli fruit pour un après-midi ;)
C'est une superbe idée. YAPLUKA, comme on dit.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede spalax » Dim 30 Nov 2014, 12:48

C'est fait : c'est dans la branche unittest.

  • testexo create Crée un test pour un exercice (crée tous les tests manquants s'il n'y a pas d'arguments).
  • testexo remove Supprime un test.
  • testexo update Effectue un test (tous les tests s'il n'y a pas d'arguments), et propose la création d'un nouveau test si le résultat a changé.
  • testexo compile Compile un exercice (utile pour avoir un aperçu rapide d'un exercice en cours de création).
  • testexo check Teste les exercices.

Quand un test est créé, il est compilé, le pdf est affiché, et l'utilisateur se voit demandé s'il valide le test ou non.

De plus, lancer python -m unittest discover fonctionne aussi.
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Dim 30 Nov 2014, 19:25

C"est super ! Si tout te semble fonctionnel, tu peux rapatrier ton code dans la branche developp.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede spalax » Sam 06 Déc 2014, 01:50

Jérôme a écrit:C"est super ! Si tout te semble fonctionnel, tu peux rapatrier ton code dans la branche developp.

Fait. J'ai aussi ajouté de la documentation.
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Sam 06 Déc 2014, 10:35

spalax a écrit:J'ai aussi ajouté de la documentation.

Voilà qui est parlé ! Ça c'est la classe ! :)
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Lun 29 Déc 2014, 00:23

Bonjour Louis,

je viens de publier mes modifications sur le serveur git. J'en ai profité pour regarder ce que pouvait donner ton code. Malheureusement, je ne peux pas lancer
./src/pyromaths/pyromaths.py

J'obtiens un long message d'erreur :
Traceback (most recent call last):
File "./src/pyromaths/pyromaths.py", line 78, in <module>
pyromaths.main()
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/pyromaths.py", line 33, in main
from outils.System import create_config_file, modify_config_file
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/outils/System.py", line 29, in <module>
from pyromaths.Values import HOME, VERSION, CONFIGDIR
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/Values.py", line 77, in <module>
ex.load()
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 142, in load
for ex in _exercises(pkg):
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 110, in _exercises
mod = __import(name, pkg)
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 98, in __import
return __import__(name, fromlist=parent)
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/test.py", line 44, in <module>
from pyromaths.outils import System
ImportError: cannot import name System

J'ai également un soucis avec la commande
./src/testexo.py create

qui ne me crée pas les exercices manquants exceptés les deux derniers SecondDegré de Lycée.
Enfin la commande
./src/testexo.py update
m'indique une erreur
INFO:root:Testing exercise ConstruireZigZag[0]…
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
INFO:root:Testing exercise Sd2aRacines[0]…
F
======================================================================
FAIL: runTest (pyromaths.ex.test.pyromaths.ex.lycee.SecondDegre.Sd2aRacines[0])
Perform test
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/test.py", line 459, in runTest
expected['tex_statement'],
AssertionError: Lists differ: ['\\exercice', u'D\xe9terminer... != [u'\\exercice', u'D\xe9termine...

First differing element 3:
P\,(x) &= 6\,x^{2}+7\,x & Q\,(x) &= 12\,x+x^{2}-9 & R\,(x) &= 4\,x^{2}-64
P\,(x) &= 6\,x^{2}+7\,x & Q\,(x) &= x^{2}-9+12\,x & R\,(x) &= -64+4\,x^{2}

- ['\\exercice',
+ [u'\\exercice',
? +

u'D\xe9terminer les racines des polyn\xf4mes :',
- '\\begin{align*}',
+ u'\\begin{align*}',
? +

- 'P\\,(x) &= 6\\,x^{2}+7\\,x & Q\\,(x) &= 12\\,x+x^{2}-9 & R\\,(x) &= 4\\,x^{2}-64',
? ------- ---

+ u'P\\,(x) &= 6\\,x^{2}+7\\,x & Q\\,(x) &= x^{2}-9+12\\,x & R\\,(x) &= -64+4\\,x^{2}',
? + +++++++ ++++

- '\\end{align*}']
+ u'\\end{align*}']
? +


----------------------------------------------------------------------
Ran 1 test in 0.005s

FAILED (failures=1)
INFO:root:Creating test for <class 'pyromaths.ex.lycee.SecondDegre.Sd2aRacines'>[0]
Is the test valid (y/n/c/?) [?]? failed to look up �nonc�s.0
failed to look up Corrig�.0
n
INFO:root:Testing exercise Sd1FormeCanonique[0]…
.
----------------------------------------------------------------------
Ran 1 test in 0.021s

OK
INFO:root:Testing exercise ArrondirNombreDecimal[0]…
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

alors que je viens juste de le créer.

Aurais tu le temps d'y jeter un œil ? ce serait sympa de sortit une nouvelle version début janvier.

À plus.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede spalax » Lun 29 Déc 2014, 13:04

Salut,
Jérôme a écrit:Bonjour Louis,

je viens de publier mes modifications sur le serveur git. J'en ai profité pour regarder ce que pouvait donner ton code. Malheureusement, je ne peux pas lancer
./src/pyromaths/pyromaths.py


Malheureusement, j'obtiens toutes les erreurs que tu soulèves. Pourtant, je suis persuadé que ça fonctionnait…

Jérôme a écrit:J'obtiens un long message d'erreur :
Traceback (most recent call last):
File "./src/pyromaths/pyromaths.py", line 78, in <module>
pyromaths.main()
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/pyromaths.py", line 33, in main
from outils.System import create_config_file, modify_config_file
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/outils/System.py", line 29, in <module>
from pyromaths.Values import HOME, VERSION, CONFIGDIR
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/Values.py", line 77, in <module>
ex.load()
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 142, in load
for ex in _exercises(pkg):
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 110, in _exercises
mod = __import(name, pkg)
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 98, in __import
return __import__(name, fromlist=parent)
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/test.py", line 44, in <module>
from pyromaths.outils import System
ImportError: cannot import name System


C'est un problème d'import circulaire du module System. J'ai corrigé le problème (temporairement) dans 9299661192775f94532a39863ecdf12aee5aa72f. Mais pour moi, le problème est plus général : l'import du module Values charge les exercices, or il arrive que ça ne soit pas voulu. Je pense qu'il serait plus propre d'avoir une fonction load_fiches(), qui charge les exercices et renvoit LESFICHES. Ainsi, on ne chargerait les exercices que si nécessaire.

J'ai aussi eu le problème lors du développement de testexo (mais je ne sais plus si il persiste) : il se trouve que le module Values était chargé deux fois, dans deux fichiers différents. Du coup, les exercices étaient chargés deux fois, et apparaissaient en double, ce qui ne se serait pas produit si les exo n'étaient pas chargés automatiquement.

Jérôme a écrit:J'ai également un soucis avec la commande
./src/testexo.py create

qui ne me crée pas les exercices manquants exceptés les deux derniers SecondDegré de Lycée.
(...)
alors que je viens juste de le créer.

Je confirme, j'ai la même erreur...

Jérôme a écrit:Aurais tu le temps d'y jeter un œil ? ce serait sympa de sortit une nouvelle version début janvier.


J'ajoute tout ça à ma todo liste. Bonnes vacances,
Louis
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Lun 29 Déc 2014, 15:58

spalax a écrit:Salut,
Malheureusement, j'obtiens toutes les erreurs que tu soulèves. Pourtant, je suis persuadé que ça fonctionnait…

Il me semble bien également que ça fonctionnait. je ne vois pas ce que j'ai pu modifier qui ait cassé cela...
spalax a écrit:C'est un problème d'import circulaire du module System. J'ai corrigé le problème (temporairement) dans 9299661192775f94532a39863ecdf12aee5aa72f. Mais pour moi, le problème est plus général : l'import du module Values charge les exercices, or il arrive que ça ne soit pas voulu. Je pense qu'il serait plus propre d'avoir une fonction load_fiches(), qui charge les exercices et renvoit LESFICHES. Ainsi, on ne chargerait les exercices que si nécessaire.

Ça me semblerait en effet plus correct.
spalax a écrit:J'ajoute tout ça à ma todo liste. Bonnes vacances,

Bonne vacances.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Re: Des tests de non régression pour les exercices

Messagede spalax » Mar 06 Jan 2015, 21:46

Jérôme a écrit:je viens de publier mes modifications sur le serveur git. J'en ai profité pour regarder ce que pouvait donner ton code. Malheureusement, je ne peux pas lancer
./src/pyromaths/pyromaths.py

J'obtiens un long message d'erreur :
Traceback (most recent call last):
File "./src/pyromaths/pyromaths.py", line 78, in <module>
pyromaths.main()
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/pyromaths.py", line 33, in main
from outils.System import create_config_file, modify_config_file
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/outils/System.py", line 29, in <module>
from pyromaths.Values import HOME, VERSION, CONFIGDIR
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/Values.py", line 77, in <module>
ex.load()
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 142, in load
for ex in _exercises(pkg):
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 110, in _exercises
mod = __import(name, pkg)
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/__init__.py", line 98, in __import
return __import__(name, fromlist=parent)
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/test.py", line 44, in <module>
from pyromaths.outils import System
ImportError: cannot import name System



Corrigé dans la branche *les_fiches*: LESFICHES n'est plus une variable globale, mais est remplacée par une fonction lesfiches(), qui charge les fiches d'exercices, et renvoit le dictionnaire correspondant. Est-ce qu'il y a une procédure de relecture de code ? Où est-ce que si je pense que ça marche (ce qui est le cas ici, mais qui était aussi déjà le cas pour testexo), j'intègre directement à *develop* ?

Jérôme a écrit:J'ai également un soucis avec la commande
./src/testexo.py create

qui ne me crée pas les exercices manquants exceptés les deux derniers SecondDegré de Lycée.

C'est normal : les autres exercices n'ont pas d'attribut *description*. Ils ne sont donc pas inclus dans pyromaths (l'interface graphique ne les affiche pas), et ne sont pas non plus pris en compte par l'outil de test. La raison est que j'appelle dans testexo, pour charger les exercices, la même fonction qu'appelle pyromaths. Maintenant, on pourrait se dire que dans testexo, on veut aussi les exercices non terminés, c'est-à-dire ceux n'ayant pas de description. Est-ce qu'ajouter une description temporaire, le temps de tester, est suffisant, ou est-ce qu'il faut que testexo inclue aussi les exercices sans description ?

Jérôme a écrit:Enfin la commande
./src/testexo.py update
m'indique une erreur
INFO:root:Testing exercise ConstruireZigZag[0]…
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
INFO:root:Testing exercise Sd2aRacines[0]…
F
======================================================================
FAIL: runTest (pyromaths.ex.test.pyromaths.ex.lycee.SecondDegre.Sd2aRacines[0])
Perform test
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/jerome/Documents/informatique/Pyromaths/src/pyromaths/ex/test.py", line 459, in runTest
expected['tex_statement'],
AssertionError: Lists differ: ['\\exercice', u'D\xe9terminer... != [u'\\exercice', u'D\xe9termine...

First differing element 3:
P\,(x) &= 6\,x^{2}+7\,x & Q\,(x) &= 12\,x+x^{2}-9 & R\,(x) &= 4\,x^{2}-64
P\,(x) &= 6\,x^{2}+7\,x & Q\,(x) &= x^{2}-9+12\,x & R\,(x) &= -64+4\,x^{2}

- ['\\exercice',
+ [u'\\exercice',
? +

u'D\xe9terminer les racines des polyn\xf4mes :',
- '\\begin{align*}',
+ u'\\begin{align*}',
? +

- 'P\\,(x) &= 6\\,x^{2}+7\\,x & Q\\,(x) &= 12\\,x+x^{2}-9 & R\\,(x) &= 4\\,x^{2}-64',
? ------- ---

+ u'P\\,(x) &= 6\\,x^{2}+7\\,x & Q\\,(x) &= x^{2}-9+12\\,x & R\\,(x) &= -64+4\\,x^{2}',
? + +++++++ ++++

- '\\end{align*}']
+ u'\\end{align*}']
? +


----------------------------------------------------------------------
Ran 1 test in 0.005s

FAILED (failures=1)
INFO:root:Creating test for <class 'pyromaths.ex.lycee.SecondDegre.Sd2aRacines'>[0]
Is the test valid (y/n/c/?) [?]? failed to look up �nonc�s.0
failed to look up Corrig�.0
n
INFO:root:Testing exercise Sd1FormeCanonique[0]…
.
----------------------------------------------------------------------
Ran 1 test in 0.021s

OK
INFO:root:Testing exercise ArrondirNombreDecimal[0]…
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

alors que je viens juste de le créer.


C'est tout pour ce soir. Je me pencherai sur cette dernière erreur plus tard.

Bonne soirée, et bonne année,
Louis
spalax
 
Messages: 84
Inscription: Mer 20 Juil 2011, 02:23
Localisation: Isère

Re: Des tests de non régression pour les exercices

Messagede Jérôme » Mer 07 Jan 2015, 10:30

Bonjour et merci pour ta réactivité.

pas de comité de relecture ici :) Si tu estimes que c'est stable, tu peux publier sur develop. Si on trouve un bug, on en discute et on essaye de corriger.

spalax a écrit:C'est normal : les autres exercices n'ont pas d'attribut *description*. Ils ne sont donc pas inclus dans pyromaths (l'interface graphique ne les affiche pas), et ne sont pas non plus pris en compte par l'outil de test.

Je me suis mal exprimé. Je voulais dire qu'il ne me créait pas les tests des niveaux 6e, 5e, 4e, ... Seulement les deux exercices de 1reS.
spalax a écrit:Est-ce qu'ajouter une description temporaire, le temps de tester, est suffisant, ou est-ce qu'il faut que testexo inclue aussi les exercices sans description ?

C'est tout à fait suffisant je pense.

Bonne journée et meilleurs vœux également.
Pyromaths génère des fiches d'exercices et leur corrigé en toute simplicité.
Un programme multi-plateformes libre et gratuit sous licence GPL
Avatar de l’utilisateur
Jérôme
Administrateur - Site Admin
 
Messages: 1073
Inscription: Sam 26 Aoû 2006, 13:10
Localisation: Nantes

Suivante

Retourner vers Propositions

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités