2013-09-23 7 views
51

Vorrei usare tox per eseguire le mie unittests in due virtualenvs, poiché la mia applicazione deve supportare 2 diverse versioni di Python.Come si esegue tox in un progetto che non ha setup.py?

Il mio problema è che tox richiede un setup.py, ma non ne ho nessuno poiché la mia applicazione non è un modulo e ha il proprio programma di installazione. Per ora non voglio passare attraverso la seccatura di automatizzare il processo di installazione in modo da funzionare con setup.py, voglio solo eseguire i miei unittests senza dover scrivere un setup.py.

È possibile? O come posso scrivere un setup.py "vuoto" che semplicemente non fa nulla? Puoi indicarmi qualche documentazione sull'argomento (la documentazione distutils spiega come scrivere un significativo setup.py, non uno vuoto)?

risposta

66

Dopo aver scavato all'interno del codice sorgente, ho trovato un opzione scarsamente documentato in tox.ini che salta sdist:

[tox] 
skipsdist = BOOL # defaults to false 

L'impostazione di questo per True ho ottenuto quello che volevo, mi risparmio la fatica di scrivere un significativo setup.py

+0

E qual è il tuo codice 'di tox.ini' che in realtà esegue i test? – linkyndy

+1

I miei test vengono eseguiti con nosetests: 'commands = nosetests {posargs}' – Kjir

+1

Eseguo i miei test di Django con 'python manage.py test' quindi setup.py non è nemmeno necessario. Grazie per il consiglio. –

33

Se si dispone di un'applicazione (con un requirements.txt), piuttosto che un progetto che si sta per distribuire (che avrebbe un setup.py invece), il vostro tox.ini dovrebbe essere simile a questa:

0.123.
[tox] 
skipsdist = True 

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

trovato questa risposta in origine dal blog di David Murphy: http://blog.schwuk.com/2014/03/19/using-tox-django-projects/

+0

Se si sta per fare questo, si potrebbe anche cercare di impostare il PYTHONPATH, per fare ciò basta fare 'setenv = # newline \t PYTHONPATH = .' sotto [testenv] – ZN13

Problemi correlati