[PYTHON] Paramètres d'exécution d'un test à chaque fois que vous enregistrez un fichier dans l'éditeur à l'aide de watchmedo (chien de garde)

Si vous souhaitez exécuter une tâche à chaque fois que vous enregistrez un fichier avec un éditeur, vous pouvez utiliser Guard pour Ruby, Grunt si vous écrivez JS, mais ce genre d'outil lors de l'écriture de code Python Je souhaite également utiliser quelque chose de fabriqué par Python. Ici, watchdog est utilisé.

Introduit

pip install watchdog

Ensuite, vous pouvez utiliser la commande watchmedo de l'utilitaire de ligne de commande. Si vous souhaitez surveiller les événements du système de fichiers et exécuter des commandes spécifiques, cela ressemble à ceci

watchmedo shell-command --patterns="*.py" --recursive --command='echo "${watch_src_path} is saved"' .

paramètres vim

Comme vous pouvez le voir dans le Readme de watchdog, je ne peux pas obtenir les événements du système de fichiers lors de l'utilisation de vim sur un terminal MacOSX +. C'est une bonne idée de modifier les paramètres vim suivants afin de ne pas créer de fichier d'échange. Mon .vimrc est le suivant. Ou si vous surveillez le fichier . *. Swp, cela fonctionnera.

.vimrc


let OSTYPE = system('uname')
if OSTYPE == "Darwin\n"
    set noswapfile
    set nowritebackup
endif

Créer une tâche de surveillance pour exécuter le test

Par exemple, si vous avez une tâche de test dans votre Makefile et que vous souhaitez ajouter une tâche de surveillance qui exécute la tâche de test lorsque vous enregistrez le fichier.

Makefile


watch:
	#Sous le répertoire des applications*.Surveillez les événements de fichier py et exécutez make test
	@echo Watch file changes and run test
	watchmedo shell-command --interval=5 --patterns="*.py" -R -W -D --command='make test' app

test:
	# (Exemple)Exécuter des tests Django
	python app/manage.py test;

Une option de prévention du double démarrage est nécessaire pour empêcher l'exécution de plusieurs tests lorsque plusieurs événements du système de fichiers sont ignorés.

Recommended Posts

Paramètres d'exécution d'un test à chaque fois que vous enregistrez un fichier dans l'éditeur à l'aide de watchmedo (chien de garde)
Une note utile lors de l'utilisation de Python après une longue période
Enregistrez les conditions de paramétrage sous forme de fichier CSV à l'aide de UDF Manager avec OCTA
Obtenir le nom de fichier dans un dossier à l'aide de glob
Enregistrer une tâche dans cron pour la première fois
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Enregistrez le modèle pystan et les résultats dans un fichier pickle
Si vous êtes novice en programmation, pourquoi ne pas créer un "jeu" pour le moment? L'histoire
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Enregistrez le fichier binaire en Python
Enregistrer les fichiers au format YAML avec PyYAML
Jusqu'à ce que vous gagniez la médaille d'argent (top 3%) dans le concours auquel vous avez participé dans un délai d'un mois pour la première fois en science des données!
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Ecrire le test dans la docstring python
Changer la liste dans l'instruction for
MongoDB avec Python pour la première fois
[IOS] Modifiez la durée d'affichage de chaque image de l'animation GIF dans Pythonista3.
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
Vérifiez le nombre de fois où la requête (sql) a été lancée dans django avec un test
Enregistrez le tableau numpy dans un fichier wav à l'aide du module wave
Remplacez la représentation unique du fichier texte lu par une étiquette (en utilisant GiNZA)
Transformez plusieurs listes avec l'instruction for en même temps en Python
C'est bon de participer pour la première fois! Un kit de démarrage hackason que vous souhaitez préparer "avant" de participer au hackason!