Je voudrais utiliser tox
pour exécuter mes tests dans deux virtualenvs, car mon application doit prendre en charge 2 versions différentes Python.
Mon problème est que tox
nécessite un setup.py
, mais je n'en ai pas car mon application n'est pas un module et possède son propre programme d'installation. Pour l'instant, je ne veux pas passer par les tracas de l'automatisation du processus d'installation pour travailler avec setup.py
, Je veux juste exécuter mes tests sans avoir à écrire un setup.py
.
Est-ce possible? Ou comment puis-je écrire un setup.py "vide" qui ne fait tout simplement rien? Pouvez-vous m'orienter vers une documentation sur le sujet (la documentation distutils
explique comment écrire un setup.py
, pas vide)?
Après avoir creusé à l'intérieur du code source, j'ai trouvé une option à peine documentée dans tox.ini qui ignore sdist:
[tox]
skipsdist = BOOL # defaults to false
Définir ce paramètre sur True
J'ai obtenu ce que je voulais, ce qui m'a épargné l'effort d'écrire un setup.py
Significatif
Si vous avez une application (avec un requirements.txt
), plutôt qu'un projet que vous allez distribuer (qui aurait un setup.py
à la place), votre tox.ini
devrait ressembler à ceci:
[tox]
skipsdist = True
[testenv]
deps = -r{toxinidir}/requirements.txt
Trouvé cette réponse à l'origine du blog de David Murphy: http://blog.schwuk.com/2014/03/19/using-tox-Django-projects/
Voici le contenu de mon fichier tox.ini pour le projet Django par plusieurs paramètres:
[tox]
envlist = py36-{accounting,content,media}_settings
skipsdist = true
[testenv]
commands = python {toxinidir}/manage.py test
deps = -r{toxinidir}/requirements.txt
setenv =
accounting_settings: Django_SETTINGS_MODULE=my_project.settings.accounting
contents_settings: Django_SETTINGS_MODULE=my_project.settings.contents
media_settings: Django_SETTINGS_MODULE=my_project.settings.media