如何使Tox使用不同的python版本测试“命名”测试环境?

时间:2018-08-08 06:11:51

标签: python testing tox

例如假设我在tox.ini中关注了

[tox]
envlist = py27, py35, testenv2

[testenv]  
 # settings related to "default" testenv - includes deps, commands

[testenv:testenv2]  
 # settings related to testenv2 - includes deps, commands

现在,当我运行tox命令时,它使用python 2.7和3.5解释器调用testenv命令,但是仅在计算机上安装了基本python的情况下调用testenv2命令(以我的情况为2.7)。

如何使tox能够同时测试testenv2之类的“命名”(非默认)测试环境以进行多个python版本的测试?

3 个答案:

答案 0 :(得分:1)

第一个答案描述了两种可行的方法。为了完整起见:您还可以生成环境并使用条件设置-例如:

[tox]
skipsdist = True
envlist = py{27,35}-{test,lint}
[testenv]
skip_install = True
deps =
    test: pytest
    test: pytest-xprocess
    lint: flake8
    lint: black
commands =
    test: pytest -v
    lint: flake8
    lint: black .

将生成(tox -a):

py27-test
py27-lint
py35-test
py35-lint

您可以使用任何因素(例如py27或测试)有条件地添加命令,部门等。

另请参阅docs

顺便说一句:要查看每个testenv到底具有哪些设置,可以运行tox --showconfig

答案 1 :(得分:0)

明确列出所有环境:

<TextBox.InputBindings>
    <MouseBinding Gesture="LeftClick" 
                  Command="{Binding TextBoxSelected, Source={StaticResource vm}}" 
                  CommandParameter="{Binding DataContext, RelativeSource={RelativeSource Mode=Self}}"/>
</TextBox.InputBindings>

如果重构[tox] envlist = py27, py35, py27-testenv2, py35-testenv2 还不够:

tox.ini

答案 2 :(得分:0)

我可以通过创建多个“命名”测试环境来获得要使用多个python版本进行测试的“命名”测试环境,每个测试环境分别代表我希望使用它进行测试并使用defmodule M do @steps [0,1,2,3,-4,5,6,-1] def sum(list, acc \\ 0) def sum([], acc), do: acc def sum([h|_], acc) when not is_number(h), do: :error def sum([h|_], acc) when h < 0, do: acc def sum([h|t], acc), do: sum(t, acc + h) def sum_steps(), do: sum(@steps) end M.sum_steps() #⇒ 6 的不同python版本。选项,指定要用于测试的测试环境的python版本。下面是有效的示例:

basepython