tox管理测试virtualenv

前言

一个所有Python项目维护者都需要面对的问题是兼容性。
有时需要同时支持Python 2.x和Python 3.x。
当你运行测试时,你只使用特定的版本环境来运行测试,它很可能在Python2.7.5中运行良好但在Python 2.6和3.3出现问题。

幸运的是有一个工具致力于解决这个问题。tox提供了“Python的标准化测试”,它不仅仅是在多个版本环境中运行你的测试。它创造了一个完整的沙箱环境,在这个环境中你的包和需求被安装和测试。如果你做了更改在测试时没有异常,但意外地影响了安装,使用Tox你会发现这类问题。

什么是tox

box是一个通用虚拟环境管理器,可以用来测试的命令行工具:

  • 检查包正确安装,对应不同Python版本和解释器
  • 在不同的环境,配置中运行测试
  • 作为一个从前端到持续集成服务器,大大减少了引用的文件,合并CI和shell-based测试。

开始

安装tox

配置ini

在test文件同级新建tox.ini配置文件或者tox-quickstart自动创建,通过回答问题更直观的设置配置

1
2
3
4
5
6
[tox]
envlist = py26,py27

[testenv]
deps=pytest
commands=py.test # 或者 'nosetests' 或者其它
  1. envlist为py26和py27,tox知道需要在这两种版本环境下运行测试。
  2. 在虚拟环境中安装pytest ,deps是你的包依赖列表。你甚至可以让tox从PyPI地址安装所有或一些你依赖包。

avoiding expensive sdist

报错

1
tox.MissingFile: MissingFile: setup.py

添加skipsdist配置

1
2
[tox]
skipsdist=True

运行测试

直接输入tox,会运行所有的tests,也可以跟上一些参数

1
tox

注:在环境中必须安装python2.6和python2.7否则你会看到错误。在第二次运行tox时你会注意到,它运行得更快,因为它已经建立了虚拟环境和需要的依赖,所以不会重建或重新安装依赖关系。

第一次运行tox时会在当前目录下面创建python的虚拟环境

1
2
3
.tox
log
py27

error
在windows创建失败错误ERROR: py27: InterpreterNotFound: python2.7py27目录下为空,未创建python虚拟环境成功。
解决:
进入本机安装的python目录下面,复制一份python.exe然后复制的那份名称改成python2.7.exe,这样tox可以找到。
运行的其他错误看详细日志,tox->python->log中。

强制重新创建虚拟环境

有时需要在requirements中添加第三方库,需要重新去执行tox.ini中的命令及配置,重新创建py的虚拟环境。如tox命令执行未成功识别不同,自动执行,则需要强制手工执行:

1
tox -r py27

参考

tox官网

  • Copyrights © 2016-2020 蜀山柚柚
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信