首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 tox 进行 Python 2和Python 3 的兼容性测试

背景

不少 Python 项目会遇到从 Python 2 到 Python 3 过渡的问题,由于过渡需要持续一段时间,所以代码得保证在 Python 2 和 Python 3 中都能运行正常。为了解决这个问题,所以需要引入 tox 这个工具。

tox 简介

tox 项目代码地址:https://github.com/tox-dev/tox

按官网描述,该项目目前是为了自动化和标准化 Python 的测试工作。主要整合了 2 块内容:分别是,virtualenv 管理不同版本 Python,以及结合不同测试工具命令行调用。

tox 有以下用处:

用不同 Python 版本的解释器,来检查 Python 包是否能正确安装;

调用你选择的测试工具,在不同 Python 版本的环境下运行测试;

更方便集成到 CI(持续集成)中,减少或合并一些可能会产生的重复内容。

使用说明安装

可以把 tox 纳入你的工程项目的研发环境常用依赖库。

配置

用向导工具生成 tox 配置

或者直接编辑新建 tox.ini 文件,常见配置如下:

相当于声明了会在 Python 2.7、Python 3.4、Python 3.5、Python 3.6 这 4 个不同环境下进行:发布、安装、测试相关的工作。

这里因为包测试需要依赖:coverage 和 nose,分别进行测试覆盖率统计和方便测试的调用。

这里借用了 nose 进行测试,所以执行的对应测试命令就是 nosetests,具体测试配置写在 nose.cfg 里,后续单独开个主题讲下 nose 的使用。

运行

没错,就这么简单,如果不想细究更多参数的话。如果运行没问题就会输出类似信息:

表示在这些 Python 解释器环境下能执行通过,说明可以兼容这些版本 Python 解释器。

例子

用一个小的 Python 工程项目举例说明并感受下 tox 的使用,具体如下:

main.py

test_main.py

setup.py

tox.ini

运行结果

命令行下执行 tox,输出示例如下:

完整示例

可以实际演练下,更方便理解,可以在这里查看更完整示例:https://github.com/akun/pm/tree/master/pm/onepiece

总结

简单总结下:

tox 可以让你更轻松地在不同 Python 版本的解释器上进行测试;

tox 只是个辅助工具,关键还是得有足够单元测试代码覆盖来检验 Python 2 和 Python 3 兼容;

tox 使用起来,可以把更多重点放到 Python 2 和 Python 3 兼容的写法上。后续单独开个主题讲下 Python 2 和 Python 3 兼容的写法。

参考

https://github.com/tox-dev/tox

https://tox.readthedocs.io/

https://docs.python.org/3/library/unittest.html

http://python-future.org/quickstart.html

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180209G0LALX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券