我有一个tox.ini文件,想要测试不同的django版本:
var array = [{id:123, value:"value1", name:"Name1"}, {id:124, value:"value2", name:"Name1"}, {id:125, value:"value3", name:"Name2"}, {id:126, value:"value4", name:"Name2"}],
names = array
.map(e => e.name)
.filter((e, i, a) => a.indexOf(e) === i);
console.log(names);
但它不起作用并引发[tox]
envlist =
py27-django16-{[base]deps]
py32-django16-{[base]deps]
py27-django17-{[base]deps]
py32-django17-{[base]deps]
[base]
deps =
nose
[testenv]
commands =
{envpython} setup.py nosetests
basepython =
py27: python2.7
py32: python3.2
deps =
django16: Django>=1.6,<1.7
django17: Django>=1.7,<1.8
的异常,我认为因为没有安装鼻子。
答案 0 :(得分:0)
您的tox.ini
有两个问题:
首先:envlist中生成的环境名称
(tox@3.5.2) 17:26:11 oliver@ob1 [1] < ~/work/tox/tests > 1744 %
tox -l
py27-django16-{[base]deps]
py32-django16-{[base]deps]
py27-django17-{[base]deps]
py32-django17-{[base]deps]
如您所见,由于大括号未关闭,因此您的条目无法完成任何操作。但即使他们被关闭,替换也不会发生,因为对deps的推荐不属于那里。你想说什么来为你的需求生成合适的环境看起来像这样(如果我猜你的意图正确 - 否则请在评论中澄清):
envlist = {py27,py32}-django{16,17}
这将生成以下环境名称:
(tox@3.5.2) 17:26:20 oliver@ob1 [0] < ~/work/tox/tests > 1745 %
tox -l
py27-django16
py27-django17
py32-django16
py32-django17
然后,您可以使用这些因素(例如py27
或django16
)来指定在您正确执行操作时必须执行的操作。很难理解这个概念,但这可能会让你开始。另外看看docs about this feature - IMO,他们解释得很清楚。
主要问题是您需要在testenv
部分的[base]
deps = nose
[testenv]
deps = {[base]deps} # <-- reference your base deps here
commands = pip freeze
部分的deps条目中引用您需要它们的代码。
最小的工作示例是:
tox.ini
您问题中的ad [tox]
envlist = {py27,py32}-django{16,17}
[base]
deps = nose
[testenv]
commands = {envpython} setup.py nosetests
basepython =
py27: python2.7
py32: python3.2
deps =
{[base]deps}
django16: Django>=1.6,<1.7
django17: Django>=1.7,<1.8
现在看起来像是:
[base]
在您的情况下 - 当您只是想在所有环境中安装它时,您甚至不需要绕过tox.ini
部分。因此,您的案例中推荐的[tox]
envlist = {py27,py32}-django{16,17}
[testenv]
basepython =
py27: python2.7
py32: python3.2
deps =
nose # just add the dep here unconditionally for all envs
django16: Django>=1.6,<1.7
django17: Django>=1.7,<1.8
commands = {envpython} setup.py nosetests
将是:
+