Python 如何在没有setup.py的项目中运行tox?
我想使用Python 如何在没有setup.py的项目中运行tox?,python,unit-testing,distutils,tox,Python,Unit Testing,Distutils,Tox,我想使用tox在两个VirtualNV中运行我的单元测试,因为我的应用程序必须支持两个不同的Python版本 我的问题是tox需要setup.py,但我没有,因为我的应用程序不是一个模块,并且有自己的安装程序。目前,我不想经历自动化安装过程的麻烦,因为要使用setup.py,我只想运行我的单元测试,而不必编写setup.py 可能吗?或者我如何编写一个“空”setup.py,它什么也不做?你能给我指出一些关于这个主题的文档吗(文档说明了如何编写一个有意义的setup.py,而不是空的)?在深入研
tox
在两个VirtualNV中运行我的单元测试,因为我的应用程序必须支持两个不同的Python版本
我的问题是tox
需要setup.py
,但我没有,因为我的应用程序不是一个模块,并且有自己的安装程序。目前,我不想经历自动化安装过程的麻烦,因为要使用setup.py
,我只想运行我的单元测试,而不必编写setup.py
可能吗?或者我如何编写一个“空”setup.py,它什么也不做?你能给我指出一些关于这个主题的文档吗(文档说明了如何编写一个有意义的
setup.py
,而不是空的)?在深入研究源代码之后,我在tox.ini中发现了一个几乎没有文档的选项,它跳过了sdist:
[tox]
skipsdist = BOOL # defaults to false
如果您有一个应用程序(带有
requirements.txt
),而不是一个您将要分发的项目(而是一个setup.py
),那么将此设置为True
我得到了我想要的,省去了编写有意义的setup.py
的工作,您的tox.ini
应该如下所示:
[tox]
skipsdist = True
[testenv]
deps = -r{toxinidir}/requirements.txt
从David Murphy的博客中找到此答案,但该页面不再可用,您可以在此处找到存档版本:
(原始链接,现已失效:)这是我的
tox.ini
文件内容,用于Django项目,通过多种设置:
[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
我还必须从配置文件中删除
usedevelop=true
我的配置如下所示:
[tox]
envlist = flake8,py36
[testenv]
usedevelop = true
install_command = pip install -U {opts} {packages}
deps =
py36: -r requirements.txt
py36: -r requirements-test.txt
flake8: flake8
commands=
flake8: flake8 app tests --ignore=E501,W503
py36: pytest {toxinidir}/tests {posargs}
如其他答案所示,我添加了
skipsdist=true
。但这还不够。如上所述,删除usedevelop=true
也起到了作用。那么实际运行测试的tox.ini
代码是什么呢?我的测试是用nosetest运行的:commands=nosetests{posargs}
我用python manage.py test
运行Django测试,因此那里也不需要setup.py。谢谢你的提示。如果你要这么做,你可能还需要设置PYTHONPATH,只需在[testenv]下设置setenv=#newline PYTHONPATH=。
这样,在开始时,在传达@ZN13的指示时,注释格式可能会让人困惑。有关它在tox.ini
文件中的外观,请参见。