使用 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 ...
随机推荐
- vs2005中删除最近打开的项目和文件的记录
vs2005中总是保留最近打开的项目和文件的记录,甚至是以删除的它也不删,-_-!下面介绍几种删除的方法: 第一种:建立一个bat文件,以后双击即可清除,内置代码如下: @echo off@REG D ...
- Angularjs - 路由 angular-ui-router
注意,使用的路由不是官方的,而是第三方的.因为这个更加强大支持嵌套而且大家都是这样用的 http://www.tuicool.com/articles/zeiy6ff http://www.open- ...
- HDU 1025 Constructing Roads In JGShining's Kingdom(二维LIS)
Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- AngularJS 初识笔记
test.html: <!DOCTYPE html> <html lang="en" ng-app> <head> <meta chars ...
- journalctl --help
journalctl [OPTIONS...] [MATCHES...] Query the journal. Flags: --system Show the sy ...
- 【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。
[SIGGRAPH 2015][巫师3 狂猎 The Witcher 3: Wild Hunt ]顶级的开放世界游戏的实现技术 作者:西川善司 日文链接 http://www.4gamer.net/ ...
- visual studio粘贴html代码.会自行添加一些未知代码(自动格式化)
比如我们要粘贴这样一段代码到VS这里 <option {if empty($param.is_active)}selected=selected{/if}>请选择</option&g ...
- eclipse编译异常修正:the project cannot be built until its prerequisite...
close错误的project,重新open , 再 clean下 .
- 20145235 《Java程序设计》第一次实验报告
实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JVM.JRE.JDK的安装位置与区 ...
- 初步理解Java的三大特性——封装、继承和多态
声明:整理自网络,如有雷同,请联系博主处理 一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被 ...