web-dev-qa-db-fra.com

Comment exécuter tox dans un projet sans setup.py?

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)?

60
Kjir

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

80
Kjir

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/

40
Ceasar Bautista

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
1
M.javid