[PYTHON] [Blender] Automatisieren Sie Blender-Add-On-Tests mit GitHub und TravisCI

Wie bei jeder Softwareentwicklung, nicht nur bei der Entwicklung von Blender-Add-Ons, ist es mühsam sicherzustellen, dass sie jedes Mal funktioniert, wenn Sie den Quellcode aktualisieren.

In diesem Artikel werde ich Ihnen zeigen, wie Sie mit GitHub und Travis CI das Testen von Blender-Add-Ons automatisieren.

Vorbereitung

Dieser Artikel verwendet den CI-Dienst (Continuous Integration) ** Travis CI ** und den Hosting-Dienst ** GitHub ** für die Testautomatisierung. Es wird langwierig sein, zu erklären, wie GitHub und Travis CI hier verwendet werden, daher werde ich darauf verzichten. Es gibt viele Artikel im Internet über GitHub und Travis CI. Lesen Sie sie daher bitte durch und bereiten Sie sie vor, bis Sie Folgendes tun können.

  1. GitHub
  1. Travis CI

Für GitHub und Travis CI können beispielsweise die folgenden Websites hilfreich sein.

Dateiorganisation

Die Dateistruktur zum Testen des Blender-Add-Ons mit Travis CI ist unten dargestellt.

/    #Repository-Stammverzeichnis
├ .travis.yml     #Konfigurationsdatei für Travis CI
├ test_addon.py   #Zu testende Add-Ons
├ run_tests.py    #Skript, das einzelne Tests aufruft
├ test_1.py       # test_addon.py Testskript
└ test_1.blend    # test_1.Für py.Datei mischen

Add-On erstellen

Erstellen Sie ein Add-On zum Testen. Nennen Sie die Datei `` `test_addon.py```. Es ist ein einfaches Add-On mit einer zu testenden Operationsklasse. Weitere Informationen zum Erstellen eines Add-Ons finden Sie im folgenden Artikel.

test_addon.py


import bpy

bl_info = {
    "name": "Zu testende Add-Ons",
    "author": "Nutti",
    "version": (1, 0),
    "blender": (2, 75, 0),
    "location": "UV Mapping >Zu testende Add-Ons",
    "description": "Zu testende Add-Ons",
    "warning": "",
    "support": "TESTING",
    "wiki_url": "",
    "tracker_url": "",
    "category": "UV"
}


class TestOps(bpy.types.Operator):

    bl_idname = "uv.test_ops"
    bl_label = "Prüfung"
    bl_description = "Bedienung zum Testen"
    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()

Erstellen einer Konfigurationsdatei (.travis.yml) für Travis CI

Speichern Sie dann die Konfigurationsdatei für Travis CI als `` `.travis.yml```.

.travis.Ein Kommentar zu yml finden Sie in den Kommentaren.


 Grundsätzlich können Sie dies anhand des Inhalts des Kommentars verstehen. Wenn Sie jedoch Probleme beim Schreiben von ".travis.yml" haben, ist der folgende Artikel hilfreich.

 * [[Travis CI] Dies und das in travis.yml geschrieben](http://qiita.com/oh_rusty_nail/items/157241b6cb5a304462fe)


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

#Angabe der Programmiersprache #Das Blender-Add-On ist in Python geschrieben. Geben Sie daher Python an language: python

#Python-Version zu verwenden #★ Sie können die verwendete Python-Version über die Python-Konsole von Blender identifizieren python:

#Prozess, der vor der Installation ausgeführt werden soll before_install: #Installieren Sie den neuesten möglichen Mixer #Bei der Installation über Package Manager werden Blender-abhängige Pakete automatisch installiert (da die manuelle Installation abhängiger Pakete zeitaufwändig ist).

#Vorbereitung für die Testausführung install: #Arbeitsbereiche erstellen und verschieben

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


# Erstellen eines Testskripts


#### **`.travis.Der im yml-Skript geschriebene Befehl wird ausgeführt, um den Test zu starten.`**

Erstellen Sie ein Testskript, das ausgeführt werden soll `` `run_tests.py```. Dies ist das ursprüngliche Testskript, das die einzelnen Tests aufruft. Das Testskript ist in Python geschrieben, der Entwicklungssprache für die Add-Ons von Blender.

Der Punkt ist, Blender in der Befehlszeile auszuführen, um die UI-Anzeige zu beseitigen. Sie können die Optionen, die beim Ausführen von Blender angegeben werden können, über die Befehlszeile von der folgenden Site aus überprüfen.

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]     #Mixer Körperpfad

addon_name = 'test_addon'      #Zu testende Add-Ons
blend_file = 'test_1.blend'    #Zum Testen erstellt.Datei mischen
src_file = 'test_1.py'         #Individuelles Testskript

#Individuelles Testskript (Test_1.py) laufen
#Auszuführender Befehl: Blender--addons test_addon --factory-startup -noaudio -b test_1.blend --python test_1.py
#Möglichkeit: 
#   --addons: test_Addon aktivieren
#   --factory-startup: startup.Blend-Datei nicht lesen
#   -noaudio:Ton deaktivieren
#   -b:Starten Sie Blender ohne Benutzeroberfläche
#   blend_file:Lesen.Datei mischen
#   --python: src_Führen Sie das in der Datei angegebene Python-Skript aus
subprocess.call([blender_path, '--addons', addon_name, '--factory-startup', '-noaudio', '-b', blend_file, '--python', src_file])

Erstellen Sie dann ein separates Testskript `test_1.py```, das von` run_tests.py``` aufgerufen wird. Es gibt viele Möglichkeiten zum Testen, aber das unittest-Modul, Pythons Testframework, ist der schnellste Weg.

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

test_1.py


import unittest    #Python-Testframework
import bpy

#Testset
class TestAddon(unittest.TestCase):
    #Bestätigen Sie, dass das Add-On erfolgreich aktiviert wurde
    def test_addon_enabled(self):
        self.assertIsNotNone(by.ops.uv.test_ops)

    #Führen Sie das Add-On aus und bestätigen Sie, dass es normal beendet wurde
    def test_execute(self):
        result = boy.ops.uv.test_ops()
        self.assertSetEqual(result, {'FINISHED'})


#Erstellen eines Testsatzes
suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestAddon)
#Testlauf
unittest.TextTestRunner().run(suite)

Zum Schluss speichern wir die .blend-Datei als `` `test_1.blend```, während Blender ausgeführt wird.

test_1.Beim Ausführen eines Tests wird eine Mischung verwendet.Dies ist eine Mischdatei.



 Wenn Sie tatsächlich testen möchten, müssen Sie eine .blend-Datei für den Test erstellen, den Sie ausführen möchten.
 Dieses Mal habe ich der Einfachheit halber den Status gespeichert, als Blender gestartet wurde.

# Führen Sie den Test aus

 Der Test wird automatisch von `` `push``` zum zu testenden Repository ausgeführt.


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

$ git push

addon_test_1.png

Bestätigung der Testergebnisse

Lassen Sie uns das Ergebnis der Testausführung von der Travis CI-Site überprüfen. Wenn der Test erfolgreich ist, sollte der folgende Bildschirm angezeigt werden.

addon_test_2.png

Sie können auch die Details des Inhalts zum Zeitpunkt der Testausführung im Web überprüfen und sehen, dass der in .travis.yml``` beschriebene Prozess ausgeführt wird. Dieses Mal führen wir zwei Tests durch, test_addon_enabled``` und test_execute```, daher wird es als Ran 2 tests in 0.001s``` angezeigt. Danach zeigt `` OK``` an, dass der bestandene Test ausgegeben wird, sodass Sie sehen können, dass der Test erfolgreich bestanden wurde.

addon_test_3.png

Die Tests werden jedes Mal durchgeführt, wenn Sie in das Repository pushen, sodass beim Aktualisieren von Add-Ons nicht mehr manuell nach Updates gesucht werden muss. Sie können den Aufwand von Test- und manuellen Bestätigungsfehlern vermeiden, und Add-On-Entwickler können sich auf die Entwicklung konzentrieren. Lassen Sie uns also die Teile automatisieren, die immer mehr automatisiert werden können.

Referenzmaterial

Recommended Posts

[Blender] Automatisieren Sie Blender-Add-On-Tests mit GitHub und TravisCI
Automatisieren Sie Python-Tests mit CircleCI
Probieren Sie lokale Tests mit Travis vor
Automatisieren Sie das Testen von Smartphone-Apps mit Appium-Python Edition
Automatisieren Sie Windows-Anwendungstests mit Windows Application Driver-Python Edition
Automatisieren Sie das Testen von Facebook-Apps mit Facebook-Testbenutzern