如何将per-env Tox deps与Pip需求文件结合使用?

时间:2016-01-29 17:46:59

标签: python django unit-testing python-unittest tox

我正在尝试使用Tox来测试Python和Django的特定版本,但还包括一个用于所有情况的附加依赖项的一般Pip需求文件。

正如Tox docs解释的那样,你首先做的是:

deps =
    django15: Django>=1.5,<1.6
    django16: Django>=1.6,<1.7
    py33-mysql: PyMySQL     ; use if both py33 and mysql are in an env name
    py26,py27: urllib3      ; use if any of py26 or py27 are in an env name
    py{26,27}-sqlite: mock  ; mocking sqlite in python 2.x

然后你会做第二次:

deps = -r{toxinidir}/pip-requirements.txt
       -r{toxinidir}/pip-requirements-test.txt

但你如何结合这些?

如果我尝试定义多个deps,Tox会给出错误“重复名称'deps'”,但我没有找到一种方法来组合deps的字典和列表标记。

我也尝试过:

deps =
    -r{toxinidir}/pip-requirements.txt
    -r{toxinidir}/pip-requirements-test.txt
    django15: Django>=1.5,<1.6
    django16: Django>=1.6,<1.7

虽然这不会给我任何解析错误,但当我去运行测试时,我收到错误:

  

错误:py27-django15:无法安装deps [-r / usr / local / myproject / pip-requirements.txt,-r / usr / local / myproject / pip-requirements-test.txt,Django&gt; = 1.5 ,&LT; 1.6]。 v = InvocationError('/ usr / local / myproject / .tox / py27-django15 / bin / pip install -r / usr / local / myproject / pip-requirements.txt -r / usr / local / myproject / pip-requirements- test.txt Django&gt; = 1.5,&lt; 1.6(见/usr/local/myproject/.tox/py27-django15/log/py27-django15-1.log)',1)

大概是因为它将需求文件解释为文字Python包名。

1 个答案:

答案 0 :(得分:1)

我认为我并不真正理解你真正想要完成的事情,而且我对你如何结合需求和tox显式依赖关系的直接问题没有答案。

据说,您可以根据环境条件在您的需求文件中包含依赖项。例如,仅为此版本的Python安装此依赖项,或仅为此平台安装此依赖项。

您可以看到some examplesPEP