kiwicom/tox本镜像是一个集成tox工具与多版本Python环境的Docker镜像,旨在简化Python项目的跨版本兼容性测试流程。通过预配置多个Python解释器和tox自动化测试工具,开发者无需在本地环境安装和管理多个Python版本,即可快速执行针对不同Python版本的测试用例,确保项目在目标版本范围内的兼容性。
确保项目根目录包含有效的tox.ini文件,定义测试环境与执行步骤。示例tox.ini配置:
ini[tox] envlist = py38, py39, py310 skipsdist = true # 使用本地代码而非重新打包 [testenv] deps = pytest pytest-cov commands = pytest tests/ --cov=myproject
将项目目录挂载到容器中,并执行tox命令:
bashdocker run -v $(pwd):/app -w /app [镜像名称] tox
-v $(pwd):/app:将当前目录(项目根目录)挂载到容器内的/app目录-w /app:设置容器工作目录为/app,确保tox读取项目中的tox.ini[镜像名称]:替换为实际使用的镜像标签(如tox-multi-python:latest)tox:执行tox命令,默认读取tox.ini配置并运行所有环境测试通过TOXENV环境变量指定需运行的测试环境(对应tox.ini中的envlist):
bashdocker run -v $(pwd):/app -w /app -e TOXENV=py39 [镜像名称] tox
上述命令仅执行py39环境的测试
在项目中创建docker-compose.test.yml,集成测试服务:
yamlversion: '3.8' services: tox-test: image: [镜像名称] volumes: - ./:/app working_dir: /app environment: - TOXENV=py38,py39 # 指定测试环境 command: tox
执行测试:
bashdocker-compose -f docker-compose.test.yml up
| 变量名 | 描述 | 默认值 |
|---|---|---|
TOXENV | 指定tox运行的环境列表(逗号分隔,对应tox.ini中的环境名) | tox.ini中的envlist |
TOXINI | 自定义tox配置文件路径(相对于工作目录) | ./tox.ini |
PYTHONPATH | 设置Python模块搜索路径,用于指定项目代码位置 | /app |
基础测试环境配置(保存为项目根目录tox.ini):
ini[tox] envlist = py37, py38, py39, py310, py311 # 需与镜像支持的Python版本匹配 skipsdist = true # 使用挂载的本地代码,不重新打包 [testenv] deps = # 测试依赖包 pytest>=7.0 pytest-cov>=4.0 # 项目依赖(根据实际项目修改) requests>=2.26 commands = # 测试执行命令 pytest tests/ --cov=myproject --cov-report=term
tox.ini中定义的Python环境(如py38)与镜像支持的Python版本匹配,避免因版本缺失导致测试失败tox-multi-python:3.11)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务