http://www.wtoutiao.com/p/1bbwIPR.html

转子上面的链接,谢谢作者。

背景在OpenStack项目中,你还在使用python tools/install_venv.py搭建单元测试环境吗?还在使用run_tests.sh命令执行单元测试吗?
是的,今天之前,我也是这样进行单元测试的。但是,情况变了。2015年12月份,nova废弃run_tests.sh脚本(#257554)。 在我们的ironic项目里也已经没有run_tests.sh和tools/install_venv.py,那么我们该使用什么工具进行OpenStack的单元测试呢?
Testing OpenStack Projects 文档里提到run_tests.sh,是这样描述的:“There is an older convention, as follows. Most projects have a shell script, named “run_tests.sh”, that runs the unit tests of that project.”。是的,run_tests.sh是一种旧的单元测试的方式,这个脚本正在逐渐的弱化,被tox代替,最终删除消失。
让我们跟随openstack社区的最新动态,来尝试学习使用tox进行OpenStack的单元测试吧。
tox是什么tox是通用的虚拟环境管理和测试命令行工具。
所谓的虚拟环境(virtualenv),就是可以在一个主机上,自定义出多套的python环境,多套环境中使用不同的python解析器,环境变量设置,第三方依赖包,执行不同的测试命令,最重要的是各个环境之间互不影响,相互隔离。
最典型的应用就测试在不同python版本下代码的兼容性,我们可以为py2.4,py2.5,py2.6,py2.7,py3.4创建不同的虚拟环境,都可以用tox统一管理;也可以在tox.ini中自定义虚拟环境,例如:testevn:pep8,代码格式检查;testenv:cover,测试覆盖率。
tox环境搭建和使用本文采用nova项目为例, 操作系统是可以上外网也可以上内网的的linux系统,nova的代码是社区的官方master分支代码。
1
配置网络环境,可以用firefox上网以后,在terminal命令行中配置代理,其它方式都可以:export http_proxy=export https_proxy=export no_proxy=2
下载nova项目git clone https://git.openstack.org/openstack/nova3
设置可以使用yum源,yum安装项目的外部依赖。每一个工程都有一个开发者quickstart的rst文档,我们首先找到它,比如,nova项目的在nova/doc/source/development.environment.rst中,ironic的在ironic/doc/source/dev/dev-quickstart文档中。        比如nova的:
        yum install python-devel openssl-devel git gcc libxslt-devel mysql-devel postgresql-devel libffi-devel libvirt-devel graphviz sqlite-devel        注:设置可用的yum源很重要,这里不详细说明yum源的设置。4
安装pipyum install python-setuptoolseasy_install -i http://mirrors.zte.com.cn/pypi/simple/pip/ pip5
安装tox上面的yum安装中已经安装了pip工具,使用pip安装tox:       pip install tox6
安装最新的virtualenvvirtualenv是可以将多个项目不同的依赖环境进行相互隔离的工具。pip install -U virtualenv7
查看下载的nova目录下的tox.ini文件,所有的tox的配置都在里面。我们先搜索一下所有可以产生的virtualenv环境配置名称。py27代表创建python2.7解析器的单元测试环境,py34代码创建python3.4解析器下的单元测试环境,pep8代表创建pep8检查的virtualenv环境。         [root@yindesheng Desktop]# cd nova        [root@yindesheng nova]# grep envlist tox.ini        envlist = py34,py27,functional,pep8,pip-missing-reqs8
我们直接进行py27的单元测试,测试所有的模块(这个操作,第一次会很慢,因为在下载pip包安装单元测试环境,第二次执行单元测试,就很快了)。       tox -e py27 --        注: 如果想单独测试一个模块test_conductor,可以使用:tox -e py27 -- test_conductor 
tox和旧的run_tests.sh和tools/install_venv.py的区别可以说,tox是run_tests.sh和tools/install_venv.py的一个合集。1
tox这个命令第一次执行,会和tools/install_venv.py的作用一样,安装创建一个特定的virtualenv环境。2
tox这个命令的第一次执行,不仅会创建新的环境,还会执行所有的单元测试,作用和run_tests.sh一样。3
我们可以只执行tox,是的,命令行:tox,什么参数都没有?它的作用是将envlist = py34,py27,functional,pep8,pip-missing-reqs这里所有的环境的测试根据tox.ini里的配置都执行一遍。这里更看出了和旧方式的区别了:tools/install_venv.py创建的环境只有一个,在.venv目录下。tox这个命令却可以创建多个环境,在.tox下,比如可以同时创建py27的和py34的,py27的放在.tox/py27下,py34的放在.tox/py34下。很好的解决了一键式测试完py27和py34两个完全不兼容的环境的所有测试。
tox使用中遇到的问题1
可以参考tox --help进行查看。2
如果,只想搭建单元测试的环境,可以使用--notest作为参数:tox -v –notest

openstack 单元测试助手tox相关推荐

  1. Openstack_单元测试工具 tox

    目录 目录 扩展阅读 Openstack 的单元测试工具 单元测试工具使用流程 tox toxini 参考文章 扩展阅读 Python Mock的入门 Openstack 的单元测试工具 unitte ...

  2. 可以进行单元测试么_为什么程序员都讨厌写单元测试?有一个词叫“相爱相杀”!...

    面对现实吧!没有人真的喜欢做单元测试.有很多人向我讲述他们超级讨厌单元测试.尽管有些人擅长于此,但对于我们大多数人而言,不管有多少抱怨.多少反感,单元测试都是一件必不可少的事情.今天,我将探讨为什么我 ...

  3. 温故OpenStack中的测试(by Joshua)

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者:张华 发表于:2018-03-15) 沿用tox调用virtualenv自动创建的虚拟环境(virtua ...

  4. Parasoft Jtest让单元测试重获青睐

    Parasoft开发了Parasoft Jtest单元测试助手来提高单元测试的效率,因为Parasoft作为软件测试的专业厂商知道它有多重要,同时也了解单元测试是极其耗时的. 众所周知,单元测试的核心 ...

  5. 云计算与云原生技术系列文章

    目录 文章目录 目录 云计算 云原生 云原生思想 容器技术 Docker containerd Kata Container APIGW ETCD 服务治理 - Service Mesh FaaS O ...

  6. 谁说 Java 要过时?2017 年 Java 大事件回顾!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 在过去的一年中,Java 历经了许多变化.在今年年初,Java EE 处于一个不确定的状态, ...

  7. 回顾 2017, Java 有哪些值得关注的重大变化?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 在过去的一年中,Java 历经了许多变化.在今年年初,Java EE 处于一个不确定的状态, ...

  8. 【原创】面向企业应用的平台框架的思考

    面向企业应用的平台框架应该是什么样子的?或者说都应该具有哪些特性(现在流行说features,而不说functions)?我也看了一些书籍,比如<企业应用架构模式>,不过它太老了,翻译成中 ...

  9. CSDN博文大赛赛况简报

    CSDN博文大赛已经开始两周啦,现在赛况如何呢,接下来,小编为大家揭晓. 大赛自2014年6月10日正式开赛以来,博友们踊跃发表文章,提交文章.到目前为止,博主们提交博文1045余篇,且以上这些数据还 ...

  10. owncloud PHP版本客户端下载,搭建过程

    源码介绍 ownCloud是一个自由且开源的个人云存储解决方案,类似于百度网盘,360网盘,你可以搭建一个属于自己的网盘系统,也可以为自己的企业搭建一个内部网盘,ownCloud的客户端软件也支持相当 ...

最新文章

  1. jdk5.0新特性—— 枚举
  2. 华为荣耀30pro鸿蒙内测版,荣耀手机用户放心了 消息称荣耀30 Pro正在内测华为鸿蒙OS...
  3. “数据资产化探索”专题
  4. python元素定位id和name_python中通过selenium简单操作及元素定位知识点总结
  5. “私域”和“会员制”有什么区别?
  6. 古诗词干货整理: 春、夏、秋、冬、山、水、日、月、风、花、雨、雪(简直太全了)
  7. Gin渲染html模板报错:ends in a non-text context: {stateHTMLCmt delimNone urlPartNone jsCtxRegexp attrNone
  8. 自然人机交互到底“自然”在哪儿?
  9. 河北工业大学城市学院2019级 Java企业级系统管理期末复习资料
  10. Python输出所有水仙花数(3种方法)
  11. STM32F407三重ADC配置
  12. pythonxy是什么东西_无状态以太坊:二进制状态树实验
  13. 串口和TCP互相转发工具
  14. 比JMeter还轻量的压力测试工具是谁?Siege
  15. HTML实时获取当前时间
  16. ldpc译码讲解_LDPC码译码方法和编码方法与流程
  17. qBittorrent一个替代 µTorrent 的开源软件
  18. 中国最能喝咖啡的城市,找到了
  19. 【STM32H7】第4章 ThreadX FileX文件系统移植到STM32H7(SD卡)
  20. 赵长鹏财富蒸发90%,孙正义亏损900亿,最全人类细胞图谱登Science封面,今日更多大新闻在此...

热门文章

  1. 抽奖活动的奖品怎么设置?
  2. 综合实验-基于RS485的多机评分系统
  3. iOS音乐播放器实现日记
  4. 视频太大怎么压缩,视频压缩怎么弄?
  5. ImageNet数据集的0到999Label对应的类别分别是什么
  6. 如何将flv转换成mp3格式
  7. 数据挖掘系列篇(10):大众点评的实时计算
  8. 自动驾驶行业观察 | Level 2到Level 4的泊车辅助系统技术剖析
  9. 斯年,愿做岁月的知音
  10. ie8对fixed的支持较差