tox 快速入门
我们在开发 Python SDK 的时候经常需要支持不同的操作系统和多个 Python 解释器版本, 那么测试时自然需要在不同的环境下去测, 如果仅依靠手工方式逐一测试无疑是非常低效的, 这时候就需要一个可以自动化管理多环境测试的工具, tox 就是我们要找的
官方链接
- 源码: tox-dev/tox
- 文档: tox.readthedocs.io
开发环境
- 操作系统: 64位 Windows 10
- Python 解释器:
- win32: python-2.7.17, python-3.6.8, python-3.7.9, python-3.8.10, python-3.9.6
- amd64: python-2.7.17, python-3.6.8, python-3.7.9, python-3.8.10, python-3.9.6
快速开始
安装 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.toml
或 setup.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
变量, 添加如下内容
再把 %PYTHONPATH%
变量添加进 PATH
里
提示
不要直接把路径添加进 PATH
, Win10 一个变量最大长度只有 2048 个字符, 超过无法继续添加内容
测试代码
重新运行 tox
命令, 产生如下内容说明所有测试通过
再编写一个测试, 运行 tox
test_print.py
def test_print():
print "Hello, world!"
如预期的一样, 只有 Python 2 的代码通过, Python 3 测试失败