DocScoDoc/docs/TestsScoDoc.md

120 lines
3.5 KiB
Markdown
Raw 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
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.
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
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:
2021-08-24 19:51:54 +02:00
/opt/scodoc/tools/fakeportal/fakeportal.py
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
Si votre install de développement est bien configurée, il suffit de lancer
```bash
tools/test_api.sh
```
2022-05-06 17:36:19 +02:00
### Configuration du serveur pour tester l'API
2022-10-31 14:45:52 +01:00
1. modifier `/opt/scodoc/.env` pour indiquer
```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
```
2022-10-31 14:45:52 +01:00
1. En tant qu'utilisateur scodoc, lancer:
```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.
3. Relancer ScoDoc:
2022-10-31 14:45:52 +01:00
```bash
2022-05-06 17:36:19 +02:00
flask run --host 0.0.0.0
2022-05-07 08:33:00 +02:00
```
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:
2022-10-31 14:45:52 +01: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
```
Rappelons quelques options utiles de `pytest`: `-x` permet de s'arrêter sur la
première erreur, et `--pdb` lance directement le débuggueur sur l'erreur.
2022-10-31 14:45:52 +01:00
Ainsi,
```bash
2022-05-06 17:36:19 +02:00
pytest --pdb -x tests/api/test_api_departements.py
```
lancera un test en mode "interactif", utile pour les mises au point.