Tests de ScoDoc¶
ScoDoc est basé sur Flask, se référer à la doc de Flask pour aller plus loin.
On travaille toujours en tant qu'utilisateur scodoc, dans le virtualenv:
su scodoc # si nécessaire
cd /opt/scodoc
source venv/bin/activate
Lancement interactif¶
flask shell
Pour mémoire, un certains nombre de commandes en ligne facilitant la gestion de ScoDoc sont disponibles, afficher la liste avec
flask --help
Tests unitaires¶
On utilise pytest. Ainsi, la commande
pytest tests/unit
lance l'ensemble des tests unitaires.
Ces tests sont lancés automatiquement avant la création du paquet Debian (release).
Rappelons quelques options utiles de pytest: -x permet de s'arrêter sur la
première erreur, et --pdb lance directement le debugger sur l'erreur.
Ainsi,
pytest --pdb -x tests/api/test_api_departements.py
lancera un test en mode "interactif", utile pour les mises au point.
Et pour lancer un seul test:
pytest -x --pdb tests/unit/test_but_cursus.py::test_refcomp_niveaux_info
Création de la base de données pour les tests unitaires¶
./tools/create_database.sh SCODOC_TEST
export FLASK_ENV=test
flask db upgrade
Tests Selenium (web)¶
Ce projet est abandonné pour l'instant (Aurélien, JMP).
Portail pour tests¶
Un faux portail "apogée" pour inscrire de faux étudiants avec photos. Utile pour tester les fonctions d'inscription/synchronisation, et aussi pour peupler rapidement une base de donnée.
Le code se trouve dans tools/fakeportal/.
Le serveur écoute par défaut sur tcp/8678. Il faudra paramétrer l'URL du
"portail" dans les préférences du ScoDoc à tester, qui est en général sur le
même hôte, donc http://localhost:8678.
Lancement:
/opt/scodoc/tools/fakeportal/fakeportal.py
Tests de l'API ScoDoc9¶
L'API est documentée ici.
Des tests sont disponibles sous scodoc/tests/api. Le mécanisme de test est un
peu différent de celui des tests unitaire: on test un client de l'API. Il faut
donc un serveur, tournant sur la même machine ou sur une machine distante. Ce
serveur doit avoir été configuré avec des données de test.
TL;DR¶
Si votre installation de développement est bien configurée, il suffit de lancer
tools/test_api.sh
Configuration du serveur pour tester l'API¶
-
modifier
/opt/scodoc/.envpour indiquerFLASK_ENV=test_api FLASK_DEBUG=1 -
En tant qu'utilisateur scodoc, lancer:
Ces commandes vont effacer la basetools/create_database.sh --drop SCODOC_TEST_API flask db upgrade flask sco-db-init --erase flask init-test-databaseSCODOC_TEST_APIsi elle existe, la recréer, mettre à jour le schéma pour la dernière version de ScoDoc installée, l'initialiser et la peupler de données fictives pour les tests. -
Relancer ScoDoc:
flask run --host 0.0.0.0 --debug
Le script tests/api/start_api_server.sh -p 5555 fait tout cela pour vous !
Configuration du client de test API¶
- Copier le fichier
scodoc/tests/api/dotenv_exempledansscodoc/tests/api/.env, et éditer ce fichier.envpour y configurer votre client de test (ne pas confondre avecscodoc/.envqui est la config de votre serveur). Normalement, il est suffisant d'indiquer l'URL de votre serveur. Si le client de test est sur la même machine que le serveur ScoDoc, c'est simplement:
SCODOC_URL="http://localhost:5000/"
Lancement des tests de l'API¶
Le serveur scodoc étant lancé comme expliqué ci-dessus, on utilise pytest sur
le client (qui peut être un autre shell de la même machine, bien sûr).
cd /opt/scodoc/
pytest tests/api/test_api_xxx.py # remplacer xxx par votre test