单元测试介绍 单元测试(Unit test)是对代码的细粒度测试,一般每写一个函数都需要写对应的测试用例。运行单元测试不应该依赖外部环境,如果依赖其他程序,可以通过mock来模拟环境。 Python项目使用标准的单元测试库来写测试用例,并可以通过业界标准工具tox来运行,部分OpenStack项目还提供了run_tests.sh脚本来简化运行。 准备环境 安装Python,通过apt-get install python-dev 安装pip,通过apt-get install python-pip 安装virtualenv,通过pip install virtualenv 安装tox,通过pip install tox 安装postgres,通过apt-get install libpq-dev 安装xml和xslt库,通过apt-get install libxml2-dev libxslt1-dev 安装ffi库,通过apt-get install libffi-dev 使用run_tests.sh 以manila项目为例: git clonehttps://github.com/openstack/manila.git cd manila/ ./run_tests.sh 使用tox tox -epy27 -- 使用testr testr run 检查UT覆盖率 ./run_tests.sh --coverage 运行UT加上参数,可以生成显示覆盖率的HTML文件,直接用浏览器打开可以了,google-chrome covhtml/index.html。 Troubleshoot 报错from oslo.config import cfg,ImportError: No module named config 因为项目依赖的oslo的版本和requirements.txt的版本不对,一般是使用了太新的oslo库,需要限制其高版本。 oslo.config>=1.6.0,<=1.7.0