2013-09-23 4 views
51

Я хотел бы использовать tox для запуска моих unittests в двух virtualenvs, так как мое приложение должно поддерживать 2 разных версии Python.Как запустить ток в проекте, у которого нет setup.py?

Моя проблема заключается в том, что tox требует setup.py, но у меня нет ни одного, поскольку мое приложение не является модулем и имеет свой собственный установщик. На данный момент я не хочу разбираться с процессом автоматизации процесса установки, поскольку работаю с setup.py, я просто хочу запускать свои unittests без необходимости писать setup.py.

Возможно ли это? Или как я могу написать «пустую» setup.py, которая просто ничего не делает? Можете ли вы указать мне на какую-то документацию по этому вопросу (в документации distutils объясняется, как написать значащий setup.py, а не пустой)?

ответ

66

Порывшись внутри исходного кода, я нашел едва документированный вариант в tox.ini, которая пропускает sdist:

[tox] 
skipsdist = BOOL # defaults to false 

Установку этого True я получил то, что хотел, спасая меня усилие написания содержательного setup.py

+0

А что ваш 'код tox.ini', что на самом деле работает тесты? – linkyndy

+1

Мои тесты выполняются с помощью nosetests: 'commands = nosetests {posargs}' – Kjir

+1

Я запускаю тесты Django с помощью 'python manage.py test', поэтому setup.py там не нужен. Спасибо за совет. –

33

Если у вас есть приложение (с requirements.txt), а не проект, который вы собираетесь распространять (который будет иметь setup.py вместо этого), ваш tox.ini должен выглядеть примерно так:

[tox] 
skipsdist = True 

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

этот ответ первоначально из блога Дэвида Мерфи: http://blog.schwuk.com/2014/03/19/using-tox-django-projects/

+0

Если вы собираетесь это сделать, вы также можете установить PYTHONPATH, для этого просто сделайте 'setenv = # newline \t PYTHONPATH = .' под [testenv] – ZN13

Смежные вопросы