博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python tox_使用tox自动化Python代码测试
阅读量:2534 次
发布时间:2019-05-11

本文共 2690 字,大约阅读时间需要 8 分钟。

python tox

Python是当今使用的最之一,并且有充分的理由:它是开源的,具有广泛的用途(例如Web编程,业务应用程序,游戏,科学编程等等),并且有一个充满活力和敬业精神的社区来支持它。 这个社区的原因是我们在 (PyPI)中拥有如此众多,种类繁多的软件包,以扩展和改进Python并解决不可避免的小问题。

在本系列中,我们将研究七个PyPI库,它们可以帮助您解决常见的Python问题。 今天,我们将研究 ,这是一种用于自动执行Python代码测试的工具。

毒物

编写Python代码时,最好进行自动检查。 尽管您可以将直接运行检查的规则转储到持续集成(CI)环境中,但很少是最佳选择。 除其他外,使用CI运行的相同参数在本地运行测试非常有用,以节省CI时间。

tox项目旨在针对不同版本的Python和不同版本的依赖项运行不同的检查。 很快,我们发现限制因素不是毒物的灵活性,而是选择组合爆炸的严酷现实!

例如,简单的tox配置可以针对多个版本的Python运行相同的测试。

[ tox      
]
envlist
= py36
, py37
[ testenv
]
deps
=
    pytest
commands
=
    pytest mylibrary

Tox将根据环境的版本自动使用正确的解释器版本来创建虚拟环境。 如果缺少虚拟环境或依赖关系发生变化,Tox将自动重建虚拟环境。

可以在环境中明确指示Python版本。

[ tox      
]
envlist
= py36
, py37
, docs
[ testenv
]
deps
=
    pytest
commands
=
    pytest mylibrary
[ testenv:docs
]
changedir
= docs
deps
=
    sphinx
commands
=
    sphinx-build -W -b html -d
{
envtmpdir
} /doctrees .
{
envtmpdir
} /html
basepython
= python3.7

本示例使用构建该库的文档。 一件好事是Sphinx库将仅安装在docs虚拟环境中。 如果mylibrary在Sphinx上导入但忘记指出显式依赖关系,则测试将正确失败。

我们还可以使用tox在不同版本的依赖项下运行测试。

[ tox      
]
envlist
=
{
py36
, py37
} -
{
minimum
, current
}
[ testenv
]
deps
=
  minimum: thirdparty
==
1.0
  current: thirdparty
  pytest
commands
=
    pytest mylibrary

这将运行四个不同的测试运行: py36-minimumpy36-currentpy37-minimumpy37-current 。 在我们的库依赖于第三方> = 1.0的情况下,这很有用:每次测试都确保我们仍然与1.0版本兼容,同时还要确保最新版本不会破坏我们。

将短毛绒毒打也是一个好主意。 例如,运行会做正确的事。

[ tox      
]
envlist
= py36
, py37
, py36-black
[ testenv
]
deps
=
    pytest
commands
=
    pytest mylibrary
[ testenv:py36-black
]
deps
=
    black
commands
=
    black --check --diff mylibrary

默认情况下,tox将运行所有测试环境。 但是,您只能运行一个环境。 例如,如果只想运行Black,请运行tox -e py36-black

如果您关心的是Python库,请将tox.ini添加到工作流程中以保持其高质量。

在本系列的下一篇文章中,我们将介绍flake8 ,这是一个linter和linting平台,可确保Python代码的一致性。

查看本系列中的前几篇文章:

翻译自:

python tox

转载地址:http://fvbzd.baihongyu.com/

你可能感兴趣的文章
Maven配置
查看>>
HttpServletRequest /HttpServletResponse
查看>>
SAM4E单片机之旅——24、使用DSP库求向量数量积
查看>>
从远程库克隆库
查看>>
codeforces Unusual Product
查看>>
hdu4348 - To the moon 可持久化线段树 区间修改 离线处理
查看>>
正则表达式的搜索和替换
查看>>
个人项目:WC
查看>>
地鼠的困境SSL1333 最大匹配
查看>>
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>
C#——winform
查看>>
CSS3 transform制作的漂亮的滚动式导航
查看>>
《小强升职记——时间管理故事书》读书笔记
查看>>
Alpha 冲刺(3/10)
查看>>
Kaldi中的Chain模型
查看>>
spring中的ResourceBundleMessageSource使用和测试示例
查看>>
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
Codeforces 279D The Minimum Number of Variables 状压dp
查看>>
打分排序系统漫谈2 - 点赞量?点赞率?! 置信区间!
查看>>