2013-09-23 24 views
51

我想用tox來運行我的unittests兩個virtualenvs,因爲我的應用程序必須支持2個不同的Python版本。如何在沒有setup.py的項目中運行tox?

我的問題是,tox需要一個setup.py,但我沒有,因爲我的應用程序不是一個模塊,並有它自己的安裝程序。現在我不想爲了使用setup.py而自動化安裝過程而煩惱,我只想運行我的單元測試,而不必編寫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

我用'python manage.py test'運行我的Django測試,因此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