[Blender] Automatisez les tests des modules complémentaires Blender avec GitHub et TravisCI

Comme pour tout développement logiciel, pas seulement pour le développement de modules complémentaires Blender, il est difficile de s'assurer que cela fonctionne à chaque fois que vous mettez à jour le code source.

Dans cet article, je vais vous montrer comment utiliser GitHub et Travis CI pour automatiser le test des modules complémentaires Blender.

Préparation

Cet article utilise le service CI (Continuous Integration) ** Travis CI ** et le service d'hébergement ** GitHub ** pour l'automatisation des tests. Expliquer comment utiliser GitHub et Travis CI ici sera long, je vais donc l'omettre. Il existe de nombreux articles sur le Web à propos de GitHub et Travis CI, veuillez donc vous y référer et vous préparer jusqu'à ce que vous puissiez faire ce qui suit.

  1. GitHub
  1. Travis CI

Pour GitHub et Travis CI, par exemple, les sites suivants peuvent être utiles.

organisation des fichiers

La structure de fichier pour tester le module complémentaire Blender avec Travis CI est indiquée ci-dessous.

/    #Répertoire racine du référentiel
├ .travis.yml     #Fichier de configuration pour Travis CI
├ test_addon.py   #Modules complémentaires à tester
├ run_tests.py    #Script qui appelle des tests individuels
├ test_1.py       # test_addon.script de test py
└ test_1.blend    # test_1.Pour py.fichier de mélange

Créer un add-on

Créez un module complémentaire à tester. Nommez le fichier `` test_addon.py ''. C'est un simple add-on avec une classe d'opération à tester. Veuillez vous reporter à l'article suivant pour savoir comment créer un module complémentaire.

test_addon.py


import bpy

bl_info = {
    "name": "Modules complémentaires à tester",
    "author": "Nutti",
    "version": (1, 0),
    "blender": (2, 75, 0),
    "location": "UV Mapping >Modules complémentaires à tester",
    "description": "Add-ons à tester",
    "warning": "",
    "support": "TESTING",
    "wiki_url": "",
    "tracker_url": "",
    "category": "UV"
}


class TestOps(bpy.types.Operator):

    bl_idname = "uv.test_ops"
    bl_label = "tester"
    bl_description = "Opération à tester"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        return {'FINISHED'}


def register():
    bpy.utils.register_module(__name__)


def unregister():
    bpy.utils.unregister_module(__name__)


if __name__ == "__main__":
    register()

Création d'un fichier de configuration (.travis.yml) pour Travis CI

Enregistrez ensuite le fichier de configuration de Travis CI sous `` .travis.yml```.

.travis.Un commentaire sur yml peut être trouvé dans les commentaires.


 En gros, vous pouvez le comprendre à partir du contenu du commentaire, mais si vous avez du mal à écrire `` .travis.yml```, l'article suivant vous sera utile.

 * [[Travis CI] Ceci et cela écrit dans travis.yml](http://qiita.com/oh_rusty_nail/items/157241b6cb5a304462fe)


#### **`yaml:.travis.yml`**

#Spécifier le langage de programmation #L'add-on Blender est écrit en Python, spécifiez donc python language: python

#Version Python à utiliser #★ Vous pouvez identifier la version de Python utilisée à partir de la console Python de Blender python:

#Processus à exécuter avant l'installation before_install: #Installez le dernier Blender possible #En installant via Package Manager, les packages dépendants de Blender sont automatiquement installés (car l'installation manuelle des packages dépendants prend du temps).

#Préparation à l'exécution du test install: #Créer et déplacer des espaces de travail

#Essai script: python ${PWD}/run_tests.py ${PWD}/tmp/blender/blender


# Créer un script de test


#### **`.travis.La commande écrite dans le script yml est exécutée pour démarrer le test.`**

Créez un script de test à exécuter run_tests.py```. Ce sera le script de test original qui appelle les tests individuels. Le script de test est écrit en Python, le langage de développement des modules complémentaires de Blender.

Le but est d'exécuter Blender sur la ligne de commande pour éliminer l'affichage de l'interface utilisateur. Vous pouvez vérifier les options qui peuvent être spécifiées lors de l'exécution de Blender à partir de la ligne de commande du site suivant.

http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Render/Command_Line

run_tests.py


import sys
import subprocess

if len(sys.argv) != 2:
    exit(-1)

blender_path = sys.argv[1]     #Chemin du corps du mélangeur

addon_name = 'test_addon'      #Modules complémentaires à tester
blend_file = 'test_1.blend'    #Créé pour les tests.fichier de mélange
src_file = 'test_1.py'         #Script de test individuel

#Script de test individuel (test_1.py) courir
#Commande à exécuter: blender--addons test_addon --factory-startup -noaudio -b test_1.blend --python test_1.py
#option: 
#   --addons: test_Activer l'addon
#   --factory-startup: startup.Ne pas lire le fichier de fusion
#   -noaudio:Désactiver le son
#   -b:Lancer Blender sans interface utilisateur
#   blend_file:Lis.fichier de mélange
#   --python: src_Exécuter le script Python spécifié dans le fichier
subprocess.call([blender_path, '--addons', addon_name, '--factory-startup', '-noaudio', '-b', blend_file, '--python', src_file])

Ensuite, créez un script de test séparé test_1.py appelé depuis `` `` run_tests.py. Il existe de nombreuses façons de tester, mais le module unittest, le framework de test de Python, est le moyen le plus rapide.

http://docs.python.jp/2/library/unittest.html

test_1.py


import unittest    #Framework de test Python
import bpy

#Ensemble d'essai
class TestAddon(unittest.TestCase):
    #Confirmez que le module complémentaire a été activé avec succès
    def test_addon_enabled(self):
        self.assertIsNotNone(by.ops.uv.test_ops)

    #Exécutez le module complémentaire et confirmez qu'il s'est terminé normalement
    def test_execute(self):
        result = boy.ops.uv.test_ops()
        self.assertSetEqual(result, {'FINISHED'})


#Créer un ensemble de test
suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestAddon)
#Essai
unittest.TextTestRunner().run(suite)

Enfin, enregistrez le fichier .blend sous le nom test_1.blend``` au démarrage de Blender.

test_1.blend est utilisé lors de l'exécution d'un test.Ceci est un fichier de fusion.



 Si vous souhaitez réellement tester, vous devez créer un fichier .blend pour le test que vous souhaitez exécuter.
 Cette fois, par souci de simplicité, j'ai sauvegardé l'état au démarrage de Blender.

# Lancer le test

 Le test est automatiquement exécuté par `` push '' vers le référentiel sous test.


#### **`run_test.sh`**
```sh

$ git push

addon_test_1.png

Confirmation des résultats des tests

Vérifions le résultat de l'exécution du test sur le site Travis CI. Si le test réussit, vous devriez voir l'écran ci-dessous.

addon_test_2.png

Vous pouvez également vérifier les détails du contenu au moment de l'exécution du test sur le Web, et vous pouvez voir que le processus décrit dans .travis.yml``` est en cours d'exécution. Cette fois, nous exécutons deux tests, test_addon_enabled``` et test_execute, donc il est affiché comme` `` Ran 2 tests in 0.001s. Après cela, OK indiquant que le test réussi est affiché, vous pouvez donc voir que le test a réussi.

addon_test_3.png

Les tests sont effectués chaque fois que vous poussez vers le référentiel, éliminant ainsi le besoin de rechercher manuellement les mises à jour lors de la mise à jour des modules complémentaires. Vous pouvez éviter les problèmes de test et de confirmation manuelle, et les développeurs de modules complémentaires peuvent se concentrer sur le développement, alors automatisons de plus en plus les parties qui peuvent être automatisées.

Matériel de référence

Recommended Posts

[Blender] Automatisez les tests des modules complémentaires Blender avec GitHub et TravisCI
Automatisez les tests python avec CircleCI
Pré-essayez les tests locaux avec Travis
Automatisez les tests d'applications pour smartphone avec Appium-Python Edition
Automatisez les tests d'applications Windows avec Windows Application Driver-Python Edition
Automatisez les tests d'applications Facebook avec les utilisateurs de test Facebook