[PYTHON] Pré-essayez les tests locaux avec Travis

Aperçu

English

Loci Logo Les services Cloud CI tels que Travis CI sont souvent utilisés pour tester des projets hébergés sur GitHub. droite.

Fondamentalement, après avoir confirmé que le test a réussi dans l'environnement de développement local, la validation et la transmission doivent être effectuées, de sorte que le test doit également réussir Travis. Cependant, le test échoue parfois en raison d'erreurs dans le fichier de configuration Travis .travis.yml ou en oubliant d'ajouter des bibliothèques dépendantes. Surtout dans le cas de bibliothèques dépendantes, si elles sont installées dans l'environnement de développement, les tests locaux réussiront et pourront être négligés.

Si le test échoue, il sera corrigé dans l'environnement local, puis poussé à nouveau et l'historique de validation de la branche distante sera pollué, donc les erreurs doivent être évitées autant que possible (surtout si vous le faites dans le référentiel de quelqu'un d'autre). Ainsi, pour un projet de langage Python ou Go, utilisez Docker pour configurer un environnement local propre, comme décrit dans .travis.yml. J'ai créé un outil pour exécuter le test, Loci.

démo

asciicast

Installation

Tout d'abord, Docker est requis, donc installez-le à l'avance (j'omettrai la méthode d'installation de Docker).

Les locus peuvent être installés si Go est installé.

$ go get github.com/jkawamoto/loci

Si Homebrew est installé,

$ brew tap jkawamoto/loci
$ brew install loci

Vous pouvez le faire avec. Dans d'autres cas, il existe un binaire compilé sur GitHub, vous pouvez donc le télécharger et le placer dans votre chemin.

Comment utiliser

Si vous avez .travis.yml dans votre répertoire actuel, exécutez simplement la commande loci. Pour tester un autre fichier, passez loci <filepath> et le chemin du fichier.

Loci contient des fichiers dans le répertoire courant et crée une image de conteneur avec les packages décrits dans .travis.yml installés. L'image originale est ʻubuntu: latest`. Lors de la première exécution, l'installation du package prend un certain temps, mais après la deuxième exécution, s'il n'y a pas de changement dans le package dépendant, l'image du conteneur passé est réutilisée le cas échéant (fonction Docker).

Si vous avez votre propre serveur de cache APT ou serveur de cache PyPI, vous pouvez les utiliser en utilisant les indicateurs --apt-proxy et --pypi-proxy. (Référence: Création d'un serveur de cache Apt dans QNAP, [Création d'un serveur de cache Pypi dans QNAP](http://qiita.com/jkawamoto/items/ 082af79bdf9a381a1d1b)))

Toutes les options de commande sont les suivantes.

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

Plans futurs

Actuellement, il ne prend en charge que Python et Go, nous prévoyons donc d'augmenter le nombre de langues prises en charge si nécessaire.

Recommended Posts

Pré-essayez les tests locaux avec Travis
Tester Elasticsearch avec python-tcptest
Serveur local avec python
[Blender] Automatisez les tests des modules complémentaires Blender avec GitHub et TravisCI
Traitement parallèle avec des fonctions locales
Automatisez les tests python avec CircleCI
Test des requêtes HTTP avec ESP-WROOM-32
Tester avec des nombres aléatoires en Python
Automatisez les tests d'applications pour smartphone avec Appium-Python Edition
Des tests plus familiers avec Selenium
Tests faciles d'AWS S3 avec MinIO
Automatisez les tests d'applications Windows avec Windows Application Driver-Python Edition