[PYTHON] Probieren Sie lokale Tests mit Travis vor

Überblick

English

Loci Logo Cloud CI-Dienste wie Travis CI werden häufig zum Testen von Projekten verwendet, die auf GitHub gehostet werden. richtig.

Nachdem bestätigt wurde, dass der Test in der lokalen Entwicklungsumgebung bestanden wurde, sollten Commit und Push ausgeführt werden, sodass der Test auch Travis weitergeben sollte. Der Test schlägt jedoch manchmal aufgrund von Fehlern in der Travis-Konfigurationsdatei ".travis.yml" oder dem Vergessen, abhängige Bibliotheken hinzuzufügen, fehl. Insbesondere bei abhängigen Bibliotheken bestehen lokale Tests, wenn sie zufällig in der Entwicklungsumgebung installiert werden, und werden möglicherweise übersehen.

Wenn der Test fehlschlägt, wird er in der lokalen Umgebung behoben, dann erneut gepusht und der Commit-Verlauf des Remote-Zweigs wird verschmutzt. Daher sollten Fehler so weit wie möglich vermieden werden (insbesondere, wenn Sie dies im Repository eines anderen Benutzers tun). Verwenden Sie für ein Python- oder Go-Sprachprojekt Docker, um lokal eine saubere Umgebung einzurichten, wie in .travis.yml beschrieben. Ich habe ein Tool zum Ausführen von Tests erstellt, Loci.

Demo

asciicast

Installation

Zunächst ist Docker erforderlich. Installieren Sie es daher im Voraus (ich werde die Installationsmethode von Docker weglassen).

Loci können installiert werden, wenn Go installiert ist.

$ go get github.com/jkawamoto/loci

Wenn Homebrew installiert ist,

$ brew tap jkawamoto/loci
$ brew install loci

Sie können es mit tun. In anderen Fällen gibt es auf GitHub eine kompilierte Binärdatei, sodass Sie sie herunterladen und in Ihren Pfad einfügen können.

Wie benutzt man

Wenn Sie ".travis.yml" in Ihrem aktuellen Verzeichnis haben, führen Sie einfach den Befehl "loci" aus. Um eine andere Datei zu testen, übergeben Sie loci <Dateipfad> und den Dateipfad.

Loci hat Dateien im aktuellen Verzeichnis und erstellt ein Container-Image mit den in .travis.yml beschriebenen Paketen. Das Originalbild ist "Ubuntu: Neueste". Bei der ersten Ausführung dauert die Installation des Pakets einige Zeit. Wenn sich das abhängige Paket nach der zweiten Ausführung nicht ändert, wird das vergangene Container-Image entsprechend wiederverwendet (Docker-Funktion).

Wenn Sie über einen eigenen APT-Cache-Server oder PyPI-Cache-Server verfügen, können Sie diese mithilfe der Flags "--apt-proxy" und "--pypi-proxy" verwenden. (Referenz: Erstellen eines Apt-Cache-Servers in QNAP, [Erstellen eines Pypi-Cache-Servers in QNAP](http://qiita.com/jkawamoto/items/ 082af79bdf9a381a1d1b)))

Alle Befehlsoptionen sind wie folgt.

loci [global options] [script file]

  If script file isn't given, .travis.yml will be used.

GLOBAL OPTIONS:
   --name NAME, -n NAME  creating a container named NAME to run tests,
                         and that container will not be deleted.
   --tag TAG, -t TAG     creating an image named TAG.
   --base TAG, -b TAG    use image TAG as the base image.
                         (default: "ubuntu:latest")
   --verbose             verbose mode, which prints Dockerfile and
                         entrypoint.sh.
   --apt-proxy URL       URL for a proxy server of apt repository.
                         [$APT_PROXY]
   --pypi-proxy URL      URL for a proxy server of pypi repository.
                         [$PYPI_PROXY]
   --http-proxy URL      URL for a http proxy server. [$HTTP_PROXY]
   --https-proxy URL     URL for a https proxy server. [$HTTPS_PROXY]
   --no-proxy LIST       Comma separated URL LIST for which proxies won't
                         be used. [$NO_PROXY]
   --help, -h            show help
   --version, -v         print the version

Zukunftspläne

Derzeit werden nur Python und Go unterstützt, daher planen wir, die Anzahl der unterstützten Sprachen nach Bedarf zu erhöhen.

Recommended Posts

Probieren Sie lokale Tests mit Travis vor
Testen von Elasticsearch mit Python-tcptest
Lokaler Server mit Python
[Blender] Automatisieren Sie Blender-Add-On-Tests mit GitHub und TravisCI
Parallelverarbeitung mit lokalen Funktionen
Automatisieren Sie Python-Tests mit CircleCI
Testen von HTTP-Anforderungen mit ESP-WROOM-32
Testen mit Zufallszahlen in Python
Automatisieren Sie das Testen von Smartphone-Apps mit Appium-Python Edition
Vertrauteres Testen mit Selen
Einfacher AWS S3-Test mit MinIO
Automatisieren Sie Windows-Anwendungstests mit Windows Application Driver-Python Edition