Python任务自动化工具tox使用教程
什么是tox
tox
是一个用于自动化测试、构建、打包Python项目的工具,它和pytest
、nose
、unittest
等测试框架结合使用,可以更加方便的进行项目开发、测试和部署。tox
使用tox.ini
文件来进行配置,在tox.ini
文件中可以定义需要测试的Python版本、依赖关系、测试命令等内容。
安装tox
使用pip
即可进行安装:
pip install tox
创建tox.ini文件
在项目根目录下创建tox.ini
文件,定义需要进行的测试环境、依赖关系和测试命令。下面是一个简单的tox.ini
文件的示例:
[tox]
envlist = py36, py37
[testenv]
deps =
pytest
pytest-cov
commands =
pytest --cov=my_module tests/
envlist
: 定义需要测试的Python版本,多个版本用逗号分隔。[testenv]
: 定义测试环境,可以定义依赖关系和测试命令。deps
: 定义测试环境依赖的Python库。commands
: 定义测试命令,可以使用pytest等测试框架执行测试。
运行tox
运行tox
命令即可执行测试,并且会自动创建虚拟环境、安装依赖、执行测试命令等过程。如果出现错误,可以通过tox --recreate
命令进行重新构建虚拟环境。下面是一个示例:
$ tox
GLOB sdist-make: /Users/username/code/my_project/setup.py
py36 create: /Users/username/code/my_project/.tox/py36
py36 installdeps: pytest, pytest-cov
py36 installed: pytest-cov-2.6.1 pytest-3.5.1
py36 runtests: commands[0] | pytest --cov=my_module tests/
============================= test session starts ==============================
platform darwin -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: /Users/username/code/my_project, inifile: tox.ini
collected 10 items
tests/test_my_module.py .......... [100%]
----------- coverage: platform darwin, python 3.6.5-final-0 -----------
Name Stmts Miss Cover
---------------------------------------
my_module/__init__ 1 0 100%
my_module/my_module 2 0 100%
---------------------------------------
TOTAL 3 0 100%
=========================== 10 passed in 0.15 seconds ===========================
py37 create: /Users/username/code/my_project/.tox/py37
py37 installdeps: pytest, pytest-cov
py37 installed: pytest-cov-2.6.1 pytest-3.5.1
py37 runtests: commands[0] | pytest --cov=my_module tests/
============================= test session starts ==============================
platform darwin -- Python 3.7.0, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: /Users/username/code/my_project, inifile: tox.ini
collected 10 items
tests/test_my_module.py .......... [100%]
----------- coverage: platform darwin, python 3.7.0-final-0 -----------
Name Stmts Miss Cover
---------------------------------------
my_module/__init__ 1 0 100%
my_module/my_module 2 0 100%
---------------------------------------
TOTAL 3 0 100%
=========================== 10 passed in 0.15 seconds ===========================
其中py36
和py37
分别是我们在tox.ini
文件中定义的两个测试环境,pytest --cov=my_module tests/
是测试命令。
示例一:tox配合pytest进行测试
现在我们有一个简单的Python项目my_project
,其中包含my_module
和tests
目录。下面是my_module
的代码:
def add(x, y):
return x + y
下面是tests/test_my_module.py
的代码:
from my_module import add
def test_add():
assert add(2, 3) == 5
这样我们就可以使用tox
来对my_project
进行测试了,只需要在tox.ini
文件中定义依赖关系和测试命令即可:
[tox]
envlist = py36, py37
[testenv]
deps =
pytest
pytest-cov
commands =
pytest --cov=my_module tests/
然后运行tox
命令就可以执行测试了:
$ tox
...
示例二:tox配合flake8进行代码规范检查
除了测试,tox
还可以和常见的Python代码规范检查工具结合使用,例如flake8
。下面是一个示例,我们使用flake8
来检查my_project
代码的规范性:
[tox]
envlist = flake8
[testenv:flake8]
deps =
flake8
commands =
flake8 --max-line-length=120 my_module/ tests/
这样我们就可以使用tox
来检查代码规范了,只需要运行tox -e flake8
即可:
$ tox -e flake8
...
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python任务自动化工具tox使用教程 - Python技术站