olivier.massot baf1098e98 add zip module 8 年之前
..
__pycache__ baf1098e98 add zip module 8 年之前
initial 0da6bc5f68 Refactoring, création des modules OA_Export, OA_Import, OA_Document, OA_Path. Ajout du statut 13 (ok avec erreurs), de la progression de l'import, correction du fonctionnement des tests 9 年之前
reference 9e51918843 CI tests 8 年之前
file.py c4e9a045a6 ajoute la fonction run_sql, et la variable ignoreref 9 年之前
readme.md fe85a61739 Ajout des fonctions ExportTable et ImportTable, qui remplacent ExportTableDef, ImportTableDef, ExportTableData, ImportTableData 9 年之前
test.py 15a6c05c3d Correct tests 8 年之前
utilities.py 8958b29bb8 Correct tests 8 年之前

readme.md

TESTS OPENACCESS

Lancer les tests

  • Fermer toutes vos applications Access
  • Executer python test.py
  • Contrôler les résultats

Notes sur l'utilisation des tests

Si le projet de test project0.accdb est modifié

Il faut penser:

  • à mettre à jour les sources dans .\reference\source
  • à supprimer de ces sources \macros\test_import.bas, \macros\test_export.bas, \modules\test_methods.bas

Utiliser avec Jenkins

  • Lancer Jenkins
  • Créer un projet 'freestyle'
  • Configurer le projet (nom, description, repo git...)
  • Ajouter une étape au build: lancer une commande batch
  • Y ajouter: python test.py

POUR LE PREMIER LANCEMENT ou EN CAS DE PROBLEME lors de l'éxecution des macros access (timeout, stuck):

  • accéder à la liste des services Windows de la machine depuis laquelle Jenkins est lancé
  • Accéder aux propriétés du service Jenkins, onglet Logon
  • Cocher: "interagir avec le bureau"

Au premier lancement, il faudra modifier les paramètres de sécurité de Office sur la session System de cette machine (Access, Options, Confidentialité, toujours autoriser les macros, activex, écxecution des données)

ATTENTION: vérifier que les paramètres windows "région et langue" sont les même coté Jenkins, sinon il y aura des problèmes dans les comparaisons des fichiers: '1,0' != '1.0'

Fonctionnement des tests

Répertoires

Le fichier Access .\initial\projet0.zip contient l'application de test.

Les tests ont lieu dans le répertoire .\work

Les résultats sont contrôlés au moyen du contenu du répertoire .\reference

Le projet de départ

L'application project0.accdb sert de support de test.

Le fichier db.accdb contient les éventuelles tables liées. ATTENTION: la chaine de connexion des tables liées à db.accdb doit pointer vers .\work\db.accdb et non pas .\initial\db.accdb

Déroulement

Préparation des fichiers

  • Le dossier .\work est vidé

  • Le dossier .\results est vidé

  • .\initial\projet0.zip est extrait vers .\work\projet0.accdb

  • .\initial\db.zip est extrait vers .\work\db.accdb

  • .\initial\empty_project.zip est extrait vers .\work\empty_project.accdb

Création des sources

  • La fonction silent_export de OpenAccess est executée depuis le fichier .\work\project0.accdb (via la macro test_export de project0.accdb)

Le répertoire .\work\source est créé

  • L'existence du fichier .\work\project0.zip créé par l'export est contrôlée

  • Les fichiers .\work\source\modules\test_methods.bas, .\work\source\macros\test_export.bas et .\work\source\macros\test_import.bas sont supprimés (ils ne font pas partie du périmètre des tests et leur présence provoquera des erreurs à l'étape suivante)

ATTENTION à s'assurer que ces fichiers ont aussi été supprimés de .\reference\source!

  • Le dossier .\work\source est copié vers .\results\source_1

Contrôle des résultats

  • La fonction compare_dirs de utilities.py est utilisée pour comparer le contenu des sous-répertoires et des fichiers sources ainsi créés à ceux contenus dans le répertoire .\reference\source. Si des différences sont remarquées, celles ci sont signalées et les tests s'arrêtent là.

Import des sources dans une base vide

  • La fonction silent_import de OpenAccess est executée depuis le fichier .\work\empty_project.accdb (via la macro test_import de empty_project.accdb)

  • .\work\empty_project.accdb est copié vers .\results\result1.accdb

  • L'existence du fichier .\work\empty_project.accdb.old créé par l'export est contrôlée

Import des sources dans un projet existant

  • La fonction silent_import de OpenAccess est executée depuis le fichier .\work\project0.accdb (via la macro test_import de project0.accdb)

  • .\work\project0.accdb est copié vers .\results\result2.accdb

  • L'existence du fichier .\work\project0.accdb.old créé par l'export est contrôlée

Contrôle des résultats

  • Exporter les sources de .\results\result1.accdb

  • Renommer .\results\source en .\results\source2

  • Controle des résultats

  • Exporter les sources de .\results\result2.accdb

  • Renommer .\results\source en .\results\source3

  • Controle des résultats

Interpréter les résultats

La build sera réussie si:

  • Elle se déroule jusqu'au bout sans erreur
  • La fonction compare.py retourne un code exit 0 à chaque fois qu'elle est appellée

De plus, on peut vérifier les résultats dans le répertoire .\results:

  • initial.accdb contient le projet de départ
  • source1 contient le résultat de l'export des sources de project0.accdb
  • result2.accdb contient le résultat de l'import de ces sources dans la base empty_project.accdb
  • result3.accdb contient le résultat de l'improt des sources dans project0.accdb
  • source2 contient le résultat de l'export des sources de result2.accdb
  • source3 contient le résultat de l'export des sources de result3.accdb

Les tests actuels ne permettent pas de remarquer d'éventuelles propriétés, objets... non intégrés à l'export OpenAccess. Une comparaison manuelle entre les result.accdb et le projet de départ sont donc importantes!

Commande batch

Voir test.py