所有环境的tox默认依赖项

时间:2016-12-28 14:56:18

标签: pytest nose python-unittest tox

我有一个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 的异常,我认为因为没有安装鼻子。

1 个答案:

答案 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

然后,您可以使用这些因素(例如py27django16)来指定在您正确执行操作时必须执行的操作。很难理解这个概念,但这可能会让你开始。另外看看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 将是:

+