OpenStack tempest配置安装运行调试




安装

$ git clone https://github.com/openstack/tempest/ # 下载源码
$ pip install tempest # 安装tempest项目

如果pip install 报错,比如某个Python包版本冲突或者之类的,可以先执行下
$ pip install -r tempest/requirements.txt # 安装Python依赖包

然后再执行
$ pip install tempest

初始化

安装完毕要初始化配置,需要执行如下命令
$ tempest init my-tempest-env-01 # 初始化测试环境目录
此步骤相当于执行如下命令
$ mkdir my-tempest-env-01 && cd my-tempest-env-01 && tempest init

修改配置

初始化测试环境目录过程中,会在测试环境目录my-tempest-env-01下自动生成如下子目录
$ etc logs tempest_lock
其中etc目录下生成了tempest.conf.sample示例配置文件,我们修改好这个文件并重命名为tempest.conf,即可执行tempest测试,

下面是我修改完毕的配置文件和初始化完毕的示例配置文件的diff结果:

 

执行测试

”’执行测试需要在修改好配置文件的测试环境配置目录下进行。”’

执行全部测试用例

有好几种方式可以执行tempest测试:
$ testr run
并发测试:
$ testr run –parallel # 注意是双横杠
更多参数可以查看testr的帮助文档:
$ testr help run

也可以用:
$ nosetests -v tempest

执行完毕后会给出结果,例如:

Ran 767 (+766) tests in 2207.974s (+2207.726s)

FAILED (id=11, failures=118 (+118), skips=196)

执行部分用例

可以按照目录+文件+类+方法的方式执行某个特定用例,比如:
$ testr run tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server
也可以仅执行某个文件中的所有用例,比如:
$ testr run tempest.api.compute.servers.test_servers_negative
或者一个类的所有用例:
$ testr run tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON

还可以用python -m testtools.run来执行部分用例,比如:
$ python -m testtools.run tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server
也可以用这种方式执行某个文件或者某个类的全部用例,用法与testr run相同。

nosetests命令执行部分用例的方法也是类似的,只不过要加上-s参数,比如:
$ nosetests -sv testtools.run tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server

调试用例

如果某个用例执行出错,可能需要加入断点单步调试,可以用pdb调试库来完成调试工作,但我更建议用ipdb库来调试,这个库更智能易用,它的缺点是不是Python系统库,需要手工安装才能使用。

””’如果要加入断点单步调试,需要使用python -m testtools.run方法来执行被调试的用例,否则可能导致断点无法进入,也就没办法进行单步调试了,切记切记!!!!!。””’

调试的第一步是在被调试的用例里面加上断点(下面以tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server用例为例进行说明,这里使用的是ipdb,pdb也是类似):

 

之后用python -m testtools.run跑起来这个用例即可进入断点调试模式。

ipdb库安装

执行如下命令即可:
$ pip install ipdb