DocAssiduites/docs/TestsScoDoc.md

148 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

2021-08-22 08:14:55 +02:00
# Tests de ScoDoc
ScoDoc est basé sur Flask, se référer à la doc de Flask pour aller plus loin.
2022-10-31 14:45:52 +01:00
On travaille toujours en tant qu'utilisateur `scodoc`, dans le *virtualenv*:
2021-08-22 08:14:55 +02:00
2023-05-28 14:43:45 +02:00
```bash
su scodoc # si nécessaire
cd /opt/scodoc
source venv/bin/activate
```
2021-08-22 08:14:55 +02:00
## Lancement interactif
2023-05-28 14:43:45 +02:00
```bash
flask shell
```
2021-08-22 08:14:55 +02:00
2023-05-28 14:43:45 +02:00
Pour mémoire, un certains nombre de commandes en ligne facilitant la gestion de
2021-08-22 08:14:55 +02:00
ScoDoc sont disponibles, afficher la liste avec
2023-05-28 14:43:45 +02:00
```bash
flask --help
```
2021-08-22 08:14:55 +02:00
## Tests unitaires
On utilise `pytest`. Ainsi, la commande
2023-05-28 14:43:45 +02:00
```bash
pytest tests/unit
```
2021-08-22 08:14:55 +02:00
lance l'ensemble des tests unitaires.
2023-05-28 14:43:45 +02:00
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,
```bash
2024-01-26 11:53:55 +01:00
pytest --pdb -x tests/api/test_api_departements.py
2023-05-28 14:43:45 +02:00
```
lancera un test en mode "interactif", utile pour les mises au point.
Et pour lancer un seul test:
```bash
pytest -x --pdb tests/unit/test_but_cursus.py::test_refcomp_niveaux_info
```
2022-10-31 14:45:52 +01:00
### Création de la base de données pour les tests unitaires
```bash
./tools/create_database.sh SCODOC_TEST
export FLASK_ENV=test
flask db upgrade
```
2021-08-22 08:14:55 +02:00
## Tests Selenium (web)
2022-10-31 14:45:52 +01:00
*Ce projet est abandonné pour l'instant* (Aurélien, JMP).
2021-08-22 08:14:55 +02:00
## 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.
2021-08-24 19:51:54 +02:00
Le code se trouve dans `tools/fakeportal/`.
2021-08-22 08:14:55 +02:00
2023-05-28 14:43:45 +02:00
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`.
2021-08-22 08:14:55 +02:00
Lancement:
2023-05-28 14:43:45 +02:00
```bash
2024-01-26 11:53:55 +01:00
/opt/scodoc/tools/fakeportal/fakeportal.py
2023-05-28 14:43:45 +02:00
```
2021-08-22 08:14:55 +02:00
2022-05-06 17:36:19 +02:00
## Tests de l'API ScoDoc9
L'API est [documentée ici](ScoDoc9API.md).
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.
2023-05-12 10:06:10 +02:00
### TL;DR
2023-05-28 14:43:45 +02:00
Si votre installation de développement est bien configurée, il suffit de lancer
2023-05-12 10:06:10 +02:00
```bash
tools/test_api.sh
```
2022-05-06 17:36:19 +02:00
### Configuration du serveur pour tester l'API
2023-05-28 14:43:45 +02:00
1. modifier `/opt/scodoc/.env` pour indiquer
2022-10-31 14:45:52 +01:00
```bash
2022-05-06 17:36:19 +02:00
FLASK_ENV=test_api
2022-10-31 14:45:52 +01:00
FLASK_DEBUG=1
2022-05-06 17:40:08 +02:00
```
2023-05-28 14:43:45 +02:00
1. En tant qu'utilisateur scodoc, lancer:
2022-10-31 14:45:52 +01:00
```bash
2022-05-06 17:36:19 +02:00
tools/create_database.sh --drop SCODOC_TEST_API
flask db upgrade
flask sco-db-init --erase
flask init-test-database
2022-05-06 17:40:08 +02:00
```
2022-05-06 17:36:19 +02:00
Ces commandes vont effacer la base `SCODOC_TEST_API` si 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.
2023-05-28 14:43:45 +02:00
1. Relancer ScoDoc:
2022-10-31 14:45:52 +01:00
```bash
2023-05-28 14:43:45 +02:00
flask run --host 0.0.0.0 --debug
2022-05-07 08:33:00 +02:00
```
2022-05-06 17:36:19 +02:00
2024-01-26 11:53:55 +01:00
Le script `tests/api/start_api_server.sh -p 5555` fait tout cela pour vous !
2022-05-06 17:36:19 +02:00
### Configuration du client de test API
2022-10-31 14:45:52 +01:00
2022-05-06 17:36:19 +02:00
1. Copier le fichier `scodoc/tests/api/dotenv_exemple` dans
`scodoc/tests/api/.env`, et éditer ce fichier `.env`pour y configurer votre
*client* de test (ne pas confondre avec `scodoc/.env` qui est la config de
2022-10-31 14:45:52 +01:00
votre serveur).
2022-05-06 17:36:19 +02:00
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:
2023-05-28 14:43:45 +02:00
```bash
SCODOC_URL="http://localhost:5000/"
```
2022-05-06 17:36:19 +02:00
### Lancement des tests de l'API
2022-10-31 14:45:52 +01:00
Le serveur scodoc étant lancé comme expliqué ci-dessus, on utilise `pytest` sur
2022-05-06 17:36:19 +02:00
le client (qui peut être un autre shell de la même machine, bien sûr).
2022-10-31 14:45:52 +01:00
```bash
2022-05-06 17:36:19 +02:00
cd /opt/scodoc/
pytest tests/api/test_api_xxx.py # remplacer xxx par votre test
```