欢迎来到tox自动化项目¶
愿景:在Python中标准化测试¶
tox
旨在自动化和标准化Python中的测试。它是简化Python软件打包、测试和发布过程的更大愿景的一部分。
什么是tox?¶
tox是一种通用 virtualenv 管理和测试命令行工具,可用于:
检查软件包是否使用不同的Python版本和解释器正确安装
在每个环境中运行测试,配置您选择的测试工具
充当持续集成服务器的前端,极大地减少了样板,并合并了CI和基于shell的测试。
基本实例¶
首先,安装 tox
具有 pip install tox
。然后将有关项目的基本信息以及要在其中运行项目的测试环境放入 tox.ini
文件就驻留在您的 setup.py
文件:
# content of: tox.ini , put in same dir as setup.py
[tox]
envlist = py27,py36
[testenv]
# install pytest in the virtualenv where commands will be executed
deps = pytest
commands =
# NOTE: you can run any command line tool here - not just tests
pytest
您还可以尝试生成 tox.ini
自动创建文件,方法是运行 tox-quickstart
然后回答几个简单的问题。
要使用Python2.7和Python3.6对项目进行sdist打包、安装和测试,只需键入::
tox
并观察发生的情况(您的环境中必须安装python2.7和python3.6,否则您将看到错误)。当你跑步的时候 tox
第二次,您会注意到它的运行速度要快得多,因为它跟踪viralenv细节,并且不会重新创建或重新安装依赖项。您可能还想结账 tox配置和使用示例 以获得更多的想法。
系统概述¶

tox 工作流程图¶
tox大致遵循以下阶段:
配置: load
tox.ini
并将其与来自命令行的选项和操作系统环境变量合并。打包 (可选):通过调用以下命令创建当前项目的源分发
python setup.py sdist
请注意,对于此操作,将使用与安装TOX的环境相同的Python环境(因此,您需要确保它包含您的构建依赖项)。对于没有
setup.py
.环境 -对于每个 tox 环境(例如
py27
,py36
)执行以下操作:1. environment creation: create a fresh environment, by default virtualenv is used. tox will automatically try to discover a valid Python interpreter version by using the environment name (e.g.
py27
means Python 2.7 and thebasepython
configuration value) and the current operating systemPATH
value. This is created at first run only to be re-used at subsequent runs. If certain aspects of the project change, a re-creation of the environment is automatically triggered. To force the recreation tox can be invoked with-r
/--recreate
.2.第二步。 安装 (可选):安装在
deps
配置部分,然后是较早打包的源代码发行版。默认情况下,pip
用于安装软件包,但是您可以通过以下方式对其进行自定义install_command
。注意事项pip
不会更新项目依赖项(在install_requires
或extras
剖面图setup.py
)如果虚拟环境中已存在任何版本;因此,我们建议您在项目依赖关系更改时重新创建您的环境。三。 命令 :按指定顺序运行指定的命令。只要它们中的任何一个的退出代码不是零,就停止,并将环境标记为失败。注意,命令以单个短划线字符开头表示忽略退出代码。
报告 打印出每个 tox 环境的结果报告:
____________________ summary ____________________ py27: commands succeeded ERROR: py36: commands failed
只有在所有环境都成功运行的情况下,tox才会返回退出代码
0
(成功)。在这种情况下,您还将看到以下消息congratulations :)
.
TOX将为您提供环境隔离:它将剥离所有未通过以下方式指定的操作系统环境变量 passenv
。此外,它还将改变 PATH
变量,以便您的命令首先在当前活动的TOX环境中解析。通常,路径中的所有可执行文件都可在 commands
,但如果没有明确允许通过 allowlist_externals
.
当前功能¶
单调乏味的Python相关测试活动的自动化
针对许多解释器和依赖项配置测试您的Python包
自动自定义(重新)创建 virtualenv 测试环境
安装您的
setup.py
将基于项目的项目添加到每个虚拟环境中测试工具不可知:以统一的方式运行pytest、nash或unittest
plugin system 用简单的钩子修改tox执行。
用途 pip 和 setuptools 默认情况下。支持通过配置安装程序命令
install_command = ARGV
。cross-Python compatible :CPython-2.7、3.5及更高版本,Jython和 pypy.
cross-platform :Windows和Unix风格的环境
与持续集成服务器集成 喜欢 Jenkins (以前称为Hudson),并帮助您避免boilerpltis和特定于平台的构建步骤。
与devpi完全互操作性 :与集成在一起,并用于在 devpi 系统,一个通用的PyPI索引服务器和发布管理工具。
driven by a simple ini-style config file
文件化的 examples 和 configuration
简明扼要的报道 关于工具调用和配置错误
专业的 supported