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.
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.
Pour GitHub et Travis CI, par exemple, les sites suivants peuvent être utiles.
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é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()
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
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.
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.
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.
Recommended Posts