2013-09-23 9 views
51

Ich möchte tox verwenden, um meine Unittests in zwei virtualenv auszuführen, da meine Anwendung 2 verschiedene Python-Versionen unterstützen muss.Wie starte ich tox in einem Projekt ohne setup.py?

Mein Problem ist, dass tox erfordert eine setup.py, aber ich habe keine, da meine Anwendung kein Modul ist und hat ein eigenes Installationsprogramm. Für jetzt möchte ich nicht den Ärger über die Automatisierung des Installationsvorgangs gehen, um mit setup.py zu arbeiten, ich möchte nur meine Unittests ausführen, ohne eine setup.py schreiben zu müssen.

Ist das möglich? Oder wie kann ich ein "leeres" setup.py schreiben, das einfach nichts tut? Können Sie mich auf eine Dokumentation zu diesem Thema hinweisen (die distutils Dokumentation erklärt, wie man eine sinnvolle setup.py schreibt, nicht eine leere)?

Antwort

66

Nach innerhalb des Quellcodes zu graben, fand ich eine kaum dokumentierte Option in tox.ini die Sdist überspringt:

[tox] 
skipsdist = BOOL # defaults to false 

diese Einstellung zu True bekam ich, was ich wollte, spart mir die Mühe ein sinnvolles schreiben setup.py

+0

Und was ist Ihr 'tox.ini' der Code, der die Tests tatsächlich läuft? – linkyndy

+1

Meine Tests werden mit nosetests ausgeführt: 'commands = nosetests {posargs}' – Kjir

+1

Ich führe meine Django-Tests mit 'python manage.py test' aus, daher wird setup.py dort auch nicht benötigt. Danke für den Tipp. –

33

Wenn Sie eine Anwendung haben (mit einem requirements.txt), sondern als ein Projekt, das Sie verteilen wollen (was hätte eine setup.py statt), Ihre tox.ini etwas sollte wie folgt aussehen:

[tox] 
skipsdist = True 

[testenv] 
deps = -r{toxinidir}/requirements.txt 

diese Antwort ursprünglich gefunden von David Murphy Blog: http://blog.schwuk.com/2014/03/19/using-tox-django-projects/

+0

Wenn Sie dies tun, können Sie auch den PYTHONPATH einstellen, tun Sie dies einfach tun 'setenv = # newline \t PYTHONPATH = .' unter [Testtenv] – ZN13

Verwandte Themen