Écrire des tests de base avec Python

Point de départ : nous supposerons que vous avez déjà configuré un basic ament_python package et que vous souhaitez y ajouter des tests.

Si vous utilisez ament_cmake_python, reportez-vous à la ament_cmake_python docs pour savoir comment rendre les tests détectables. Le contenu du test et l’invocation avec colcon restent les mêmes.

Configuration du paquet

setup.py

Votre setup.py doit avoir une dépendance de test sur pytest dans l’appel à setup(...) :

tests_require=['pytest'],

Fichiers et dossiers de test

Votre code de test doit aller dans un dossier nommé tests à la racine de votre package.

Tout fichier contenant des tests que vous souhaitez exécuter doit avoir le modèle test_FOO.pyFOO peut être remplacé par n’importe quoi.

Exemple de mise en page du package :

awesome_ros_package/
  awesome_ros_package/
      __init__.py
      fozzie.py
  package.xml
  setup.cfg
  setup.py
  tests/
      test_init.py
      test_copyright.py
      test_fozzie.py

Contenu des tests

Vous pouvez maintenant écrire des tests à votre guise. Il y a beaucoup de ressources sur pytest, mais en bref, vous pouvez écrire des fonctions avec le préfixe test_ et inclure les déclarations assert que vous souhaitez.

def test_math():
    assert 2 + 2 == 5   # This should fail for most mathematical systems

Commandes spéciales

Au-delà des commandes standard de test colcon, vous pouvez également spécifier des arguments au framework pytest à partir de la ligne de commande avec le drapeau --pytest-args. Par exemple, vous pouvez spécifier le nom de la fonction à exécuter avec

colcon test --packages-select <name-of-pkg> --pytest-args -k name_of_the_test_function