openstack 单元测试助手tox

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值