使用 tox flake8 pytest 规范 python 项目
使用 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 项目的更多相关文章
- pytest、tox、Jenkins实现python接口自动化持续集成
pytest介绍 pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩展性,用户自 ...
- 如何建立一个完美的 Python 项目
原文地址:How to set up a perfect Python project 原文作者:Brendan Maginnis 译者:HelloGitHub-丫丫 校对者:HelloGitHub- ...
- 正确地组织python项目的结构
统一的项目结构 写了不少python项目后, 越来越认识到python项目结构重要性. 不管项目是否要开源, 是否要提交pypi, 项目结构的一致性带来的好处还有很多: 多人合作开发大家都有个基本的g ...
- 以正确的方式开源 Python 项目
以正确的方式开源 Python 项目 大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清 晰和无痛.我不是 ...
- 以正确的方式开源 Python 项目(转)
大多数Python开发者至少都写过一个像工具.脚本.库或框架等对其他人也有用的工具.我写这篇文章的目的是让现有Python代码的开源过程尽可能清晰和无痛.我不是简单的指——“创建一个GitHub库,提 ...
- 创建成功的Python项目
创建成功的Python项目 前端开发工具技巧介绍—Sublime篇 SEO在网页制作中的应用 观察者模式 使用D3制作图表 英文原文:Create successful Python projects ...
- 精选 TOP45 值得学习的Python项目
精选 TOP45 值得学习的Python项目 [导读]热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目.我们进行了翻译,在 ...
- 如何使用 Pylint 来规范 Python 代码风格
如何使用 Pylint 来规范 Python 代码风格 转载自https://www.ibm.com/developerworks/cn/linux/l-cn-pylint/ Pylint 是什么 ...
- Python项目中如何优雅的import
Python项目中如何优雅的import 前言 之前有一篇关于Python编码规范的随笔, 但是写的比较杂乱, 因为提到了import语句, 在篇文章中, 我专门来讲Python项目中如何更好的imp ...
随机推荐
- hdu 3415
单调队列即保持队列中的元素单调递增(或递减)的这样一个队列,可以从两头删除,只能从队尾插入.单调队列的具体作用在于,由于保持队列中的元素满足单调性,对于上述问题中的每个j,可以用O(1)的时间找到对应 ...
- Html - 浮动的云朵
http://www.17sucai.com/download/9006.html @-webkit-keyframes animate-cloud { from { background-posit ...
- sql 语句大小写的问题
关键字不区分大小写 例如 select ,from, 大小写均可 标识符区分大小写 例如 表名,列名 标识符如果不加双引号,默认是按大写执行 标识符如果加双引号,则是按原始大小写执行 但是,当表名加上 ...
- mysql主从复制 主主复制 读写分离
首先是mysql的主从复制很简单 主主复制也就是互相主从最麻烦的最难的就是日志恢复,增量恢复什么的比较复杂 首先如果你不会安装mysql版本最好一样,或者往上的版本,因为mysql是向下兼容 请注意不 ...
- AngularJS+ckEditor管理ng-model
1.首先去ckeditor的官网下载ckeditor包,http://ckeditor.com/download: 2.把ckeditor文件夹放入工程中(webapp文件夹下能访问到的都行). 3. ...
- A trip through the Graphics Pipeline 2011_01
It’s been awhile since I posted something here, and I figured I might use this spot to explain some ...
- HTTP 笔记与总结(3 )socket 编程:发送 GET 请求
使用 PHP + socket 模拟发送 HTTP GET 请求,过程是: ① 打开连接 ② 构造 GET 请求的数据:写入请求行.请求头信息.请求主体信息(GET 请求没有主体信息) ③ 发送 GE ...
- 使用国内镜像源来加速python pypi包的安装
pipy国内镜像目前有: http://pypi.douban.com/ 豆瓣 http://pypi.mirrors.ustc.edu.cn/ 中国科学技术大学 安装时,使用-i参数 pip i ...
- Cacti安装详细步骤
原文链接: https://www.centos.bz/2012/01/cacti-install-tutorials/ Cacti-监控MySQL: http://www.cszhi.com/201 ...
- Listener-监听器+ServletContext+ApplicationContext
参考资料 ServletContext和ApplicationContext有什么区别 ServletContext:是web容器的东西, 一个webapp一个, 比session作用范围要大, 从中 ...