使用 tox flake8 pytest 规范 python 项目

python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox 、 flake8 、 pytest 。

tox 管理 virtualenv 环境,可在一个 python 项目中定义多个版本的 python 环境,从而检查项目源代码的兼容性。flake8 进行源代码检查,根据 pep8 检查源代码是否符合规范(也可使用 pylint ,pylint 较严格)。 pytest 进行单元测试,或者通过 pytest 的插件 pytest-cov 同时进行代码覆盖率测试。

示例

假设项目布局如下 ::

.
├── CHANGELOG
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── doc
├── requirements.txt
├── myproj
├── test-requirements.txt
├── tests
├── tools
├── tox.ini
└── venv

源代码目录为 myproj ,测试代码目录为 tests ,当前的 vitualenv 在 venv 目录中。

在 python 项目中,安装 tox ::

pip intall tox

并把 flake8 和 pytest 、 pytest-cov 加入到测试依赖 test-requirements.txt ::

pytest
pytest-cov
mock
testtools
fixtures
flake8
coverage

配置 tox ,定义所需要支持的环境,和运行的任务,写入 tox.ini 配置文件,如下 ::

[tox]
envlist = py,py27,py{34,35},pep8
skip_missing_interpreters = True
skipsdist = True
indexserver = default = https://pypi.doubanio.com/simple [testenv]
passenv = *
install_command = pip install -U {opts} {packages}
setenv = PYTHONPATH={toxinidir}/
deps = -rrequirements.txt
-rtest-requirements.txt
commands = py.test [pytest]
testpaths = tests
addopts = --maxfail=2 -rf [testenv:pep8]
commands = flake8 myproj
flake8 tests [flake8]
exclude = env,venv,.venv,.git,.tox,dist,doc [testenv:cover]
commands = py.test --cov

为了支持覆盖测试(使用 coverage),加入 .coveragerc 配置文件 ::

[run]
omit = tests/*
source = myproj [paths]
source = myproj

然后运行 tox ::

tox     # 创建不同的 python 环境并运行 pytest ,最后运行 pep8
tox -e pep8 # 单独运行 pep8
tox -e cover # 代码覆盖率

这些工具都是标准工具,以后还可以和 jenkins 等集成。

使用 tox flake8 pytest 规范 python 项目的更多相关文章

  1. pytest、tox、Jenkins实现python接口自动化持续集成

    pytest介绍 pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩展性,用户自 ...

  2. 如何建立一个完美的 Python 项目

    原文地址:How to set up a perfect Python project 原文作者:Brendan Maginnis 译者:HelloGitHub-丫丫 校对者:HelloGitHub- ...

  3. 正确地组织python项目的结构

    统一的项目结构 写了不少python项目后, 越来越认识到python项目结构重要性. 不管项目是否要开源, 是否要提交pypi, 项目结构的一致性带来的好处还有很多: 多人合作开发大家都有个基本的g ...

  4. 以正确的方式开源 Python 项目

    以正确的方式开源 Python 项目 大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清 晰和无痛.我不是 ...

  5. 以正确的方式开源 Python 项目(转)

    大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清晰和无痛.我不是简单的指——“创建一个GitHub库,提 ...

  6. 创建成功的Python项目

    创建成功的Python项目 前端开发工具技巧介绍—Sublime篇 SEO在网页制作中的应用 观察者模式 使用D3制作图表 英文原文:Create successful Python projects ...

  7. 精选 TOP45 值得学习的Python项目

    精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...

  8. 如何使用 Pylint 来规范 Python 代码风格

    如何使用 Pylint 来规范 Python 代码风格 转载自https://www.ibm.com/developerworks/cn/linux/l-cn-pylint/   Pylint 是什么 ...

  9. Python项目中如何优雅的import

    Python项目中如何优雅的import 前言 之前有一篇关于Python编码规范的随笔, 但是写的比较杂乱, 因为提到了import语句, 在篇文章中, 我专门来讲Python项目中如何更好的imp ...

随机推荐

  1. 活跃天数计算用户等级模仿QQ的升级方式

    QQ等级的算法:设当前等级为N,达到当前等级最少需要的活跃天数为D,当前活跃天数为Dc,升级剩余天数为Dr,则: 从而推出: 好了,引述完成,懒得写字了,贴出代码: 复制内容到剪贴板 代码: < ...

  2. 使用SEP禁止客户端修改IP地址 - 飞舞的菜刀 - 51CTO技术博客

    1.首先从注册表中搜寻 IP地址所在的位置,查到几项,此项即可: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Paramete ...

  3. 【液晶模块系列基础视频】5.4.X-GUI字体驱动4

    ============================= 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:ht ...

  4. 移动Web单页应用开发实践——实现Pull to Request(上/下拉请求操作)

    在单页应用开发中,无论是页面结构化,还是Pull to Request,都离不开一个技术——页面局部滚动.当下的移动web技术,主要使用下面两种方式实现局部区域的滚动: 基于IScroll组件,也有很 ...

  5. eclipse怎么显示代码行数

    熟悉java开发的朋友们肯定有这样的经验,那就是在用eclipse进行java开发的时候,没有显示代码的行数,这并不利于我们进行程序的调试.今天,小编就来教大家eclipse怎么显示代码行数     ...

  6. [杂谈]交通工具orca card

    How and Where to Use the ORCA Card The Microsoft ORCA card provides unlimited rides on all buses, tr ...

  7. jQuery Ajax 确定 form 表单 submit 提交成功

    使用 jQuery 提交表单,可以使用 同步方式(async: false). a.html 是 html 文件,a.php 是服务端文件,把 a.html 中表单的数据提交到 a.php 中,在提交 ...

  8. ThinkPHP 3.2 版本升级了哪些内容

    ThinkPHP 3.2 版本升级了哪些内容           ThinkPHP 3.2发布了挺长时间了,这里也总结下这次ThinkPHP 3.2到底发生了哪些变化,方便程序员们进行开发. 前言 T ...

  9. the OS maintains a number of queues

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION To do its job, the OS ...

  10. Java内存管理和垃圾回收

    笔记,深入理解java虚拟机 Java运行时内存区域 程序计数器,线程独占,当前线程所执行的字节码的行号指示器,每个线程需要记录下执行到哪儿了,下次调度的时候可以继续执行,这个区是唯一不会发生oom的 ...