跳到主要内容

tox 快速入门

我们在开发 Python SDK 的时候经常需要支持不同的操作系统和多个 Python 解释器版本, 那么测试时自然需要在不同的环境下去测, 如果仅依靠手工方式逐一测试无疑是非常低效的, 这时候就需要一个可以自动化管理多环境测试的工具, tox 就是我们要找的

官方链接

开发环境

快速开始

安装 tox

pip install tox

配置 tox

在工作目录新建 tox.ini 文件, 添加如下内容:

[tox]
envlist = py27-x86, py36-x86, py37-x86, py38-x86, py39-x86, py27-x64, py36-x64, py37-x64, py38-x64, py39-x64
[testenv]
deps = pytest
commands = pytest

随便编写一个测试文件

test_op.py
def test_add():
assert 1 + 1 == 2

运行 tox

运行 tox 非常简单, 只需要在工作目录下运行 tox 命令即可

tox

如果运行上述例子你就会发现如下错误. 因为一般我们开发 Python 库都需要有个 pyproject.tomlsetup.py 构建脚本, tox 默认需要这两个文件之一, 如果没有就会报错, 想要忽略这个错误需要添加配置, 在 tox.ini 文件的 tox 段内添加 skipsdist = true

ERROR: No pyproject.toml or setup.py file found.

安装 Python 解释器

如果你只有一个 Python 解释器那么运行上述例子还是会出错, 因为 tox 并不会给你安装解释器, 你需要自己安装并添加各个解释器路径到环境变量. 比较方便的做法是使用包管理工具, 我这里并不打算用任何包管理工具, 而是手工逐个安装 Python 解释器.

首先去到 Python.org 下载解释器安装包, 点击安装, 我根据下面路径把 Python 统一安装在一个目录, 方便管理

Python
├── Win32
│   ├── Python27
│   ├── Python36
│   ├── Python37
│   ├── Python38
│   └── Python39
└── Win64
├── Python27
├── Python36
├── Python37
├── Python38
└── Python39

然后添加环境变量, 新建 PYTHONPATH 变量, 添加如下内容

img

再把 %PYTHONPATH% 变量添加进 PATH

提示

不要直接把路径添加进 PATH, Win10 一个变量最大长度只有 2048 个字符, 超过无法继续添加内容

测试代码

重新运行 tox 命令, 产生如下内容说明所有测试通过

img

再编写一个测试, 运行 tox

test_print.py
def test_print():
print "Hello, world!"

如预期的一样, 只有 Python 2 的代码通过, Python 3 测试失败

img