如何针对不同的Python * patch *版本测试库?

时间:2019-07-28 22:51:36

标签: python testing tox

我正在编写一个库,并想针对不同的Python补丁版本(例如3.7.1、3.7.2等)进行测试

我已经使用tox很长时间了,但是根据answer的说法,它实际上并不支持这种用法。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

对于3.8.1的一项检查(假设python3.8指向3.8.2),可以使用discover flag

tox --discover /path/to/python3.8.1 -e py38

如果要定义一个始终使用3.8.1的环境,则可以通过定义一个新的tox环境并将basepython设置为python3.8.1来实现。

[testenv:py381]
basepython = python3.8.1

[testenv:py382]
basepython = python3.8.2

答案 1 :(得分:1)

我会去Docker并运行它的容器。

$.attr
prop

您可以使用以下命令查看可用的图像:

$ docker run -it --rm -w /opt -v "$PWD:/opt" python:3.4.2 python <script.py>

-it - interactive mode --rm - remove container after the run -w - working directory inside container -v - map directory $PWD from host to /opt inside container <container> - python:3.4.2 <command> - python script.py 过滤掉beta和alpha版本,因此,如果需要它们-只需删除grep。

如果您需要列表中没有的Python版本,则可以使用自定义Python构建$ curl -s https://registry.hub.docker.com/v1/repositories/python/tags | \ jq -r .[].name | grep "^[23][.0-9]*$" | sort -V 2 2.7 2.7.7 2.7.8 2.7.9 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.15 2.7.16 3 3.2 3.2.6 3.3 3.3.5 3.3.6 3.3.7 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.4.10 3.5 3.5.0 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.5.7 3.6 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 图像。

以Alpine linux为例(这确实很小) https://github.com/docker-library/python/blob/f82205cde8f0a5ffa276103a50d843edced67757/3.7/alpine3.10/Dockerfile

答案 2 :(得分:0)

可能最麻烦(但乏味)的方法是在监狱或VM中依次安装不同版本的Python,然后在其上测试代码。

如果在类似UNIX的系统上从源代码安装Python,则可以尝试使用不同的前缀(例如/opt/patch1opt/patch2等)并排安装它们。 然后显着使用正确的python(如/opt/patch1/bin/python3)运行测试。一个警告:我不确定在这种情况下Python可执行文件是否会找到正确的共享库。

通过ms-windows安装程序,您可以选择安装位置。如果您指示它 not 将Python放入PATH中,并且未设置文件关联等,那么这也可能会起作用。您还必须使用完整路径显式调用正确的Python。