"Nowledgeable answer checker library including python unit test library"
Project description
Création d'exercice python
Outre les énoncés, fichiers de données et tags, pour créer un exercice il faut coder le test qui va vérifier si l'étudiant a fait une bonne réponse
Il faut donc compléter "correction code" qui va être executé chaque fois que l'étudiant soumet une réponse.
Ce script doit générer un json qui indique si l'étudiant a juste / faux et pourquoi. Il sera transmis à l'étudiant et affiché de manière jolie dans nowledgeable.
le json a globalement le format suivant
{
'isRight': true|false|0|1, //indique si la réponse est globalement juste ounon
'print': "string",
'tests': [
{
"name": "nom du test",
'isRight': true|false|0|1,
'expected': "value" //optionnel,
'submitted': "value" //optionnel,
"message": "message si le test est faux"
},
...
]
}
Pour cela, la class AnswerTester
est mise à disposition.
Elle permet de tester les réponses de l'étudiant est de
générer le json en fonction de la justesse de ces dernieres.
Cette classe permet de :
- tester si deux variables sont égales avec la méthode compare_variables
- tester si deux fonctions sont égales avec la méthode compare_functions
- de vérifier une condition quelconque avec la méthode assert
- de vérifier qu'une fonction donnée a été appéle avec des arguments données #soon
- de générer le json correspondant aux différents test avec la méthode get_test_output
Utilisation
Voici ci contre les différents méthodes avec les arguments nécessaires:
tester = AnswerTester()
# tester.compare_variables("nom test", submited, expected, "message optionnel mais recommendé")
# tester.compare_functions("nom test", submited, expected, test_inputs, "message")
# tester.assert("nom", assertion (boolean), "message)
# tester.assert_function_call_with(''function_name', expected_arguments) #not ready yet
result_status = tester.get_test_output() //génération du json
result = tester.get_test_output()
Exemples
Exercice où l'étudiant code une fonction avec compare_functions
prennons l'énoncé suivant :
"Coder la fonction multiply_by_two(x) qui calcule 2 * x pour chaque x"
Le code de test pourra être comme ci dessous.
On utilise la méthode compare_function
.
Pour cela il faut coder la fonction solution.
compare_function
va comparer la sortie de la fonction de l'étudiant
et de la fonction solution sur plusieurs jeux d'entrée
test_inputs
représenté les entrée de test.
C'est un tableau de tableau.
Chaque sous tableau représente un test et contient les arguments de la fonction
def solution(x): return 2 * x
tester = AnswerTester()
test_inputs = [
[3], # la fonction sera testée avec l'argument x=3
[-2],# la fonction sera testée avec l'argument x=-2
[random.randint(-3, 3)] #la fonction sera testée avec un x aléatoire entre -3 et 3
]
tester.compare_functions("nom test", multiply_by_two, solution, test_inputs, "message")
result_status = tester.get_test_output()
result = tester.get_test_output() #A la fin on demande de générer le json
utilisation de compare_variable
soon
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for nowledgeable-0.0.14-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bc80b3d62bfbbc1097063f07f976cadf52d502530e9ceebaa7c9cbb4892e65e |
|
MD5 | 3820bc258d8604d90f08ec91ca32bee3 |
|
BLAKE2b-256 | 4b4095fbd882601f5af7cdc0f1f553a272afc709f7ad79d485b03588393ca636 |