1, 什么是Tempest

tempest
├── api # API的测试集
├── cli # OpenStack的命令行工具测试集
├── common # 一些公共的工具类和函数
├── scenario # 对OpenStack的常用场景进行测试,包括基本的启动VM,挂载volumn和网络配置等
├── services # tempest自己实现的OpenStack API Client,自己实现是为了不让一些bug隐藏在官方实现的Client里面。
├── stress # 压力测试集,利用multiprocessing来启动多个进程来同时对OpenStack发起请求。
├── thirdparty # EC2兼容的API测试集
├── whitebox # 白盒测试集,主要是对DB操作,然后发起请求,然后比对结果
、tempest是通过nose驱动的,python语言编写,使用testtools和testresources等几个测试工具库
、tempest.test.BaseTestCase,BaseTestCase声明config属性,读取配置文件
、tempest.test.TestCase声明很多工具函数,供调用
、每个测试可以分别测试JSON格式和XML格式

安装与使用参考文档  http://docs.OpenStack.org/developer/tempest/overview.html

下载tempest

# git clone https://github.com/openstack/tempest.git
# cd tempest
# python setup.py install
# pip install -r requirements.txt

生成配置文件

# pip install tox  
# sudo apt-get install curl
# tox -egenconfig
# cp etc/{tempest.conf.sample,tempest.conf}

编辑tempest.conf 文件
参考文档  http://docs.openstack.org/developer/tempest/configuration.html#tempest-configuration

[root@localhost tempest]# grep ^[^#] etc/tempest.conf
[DEFAULT]
[alarming]
[auth]
use_dynamic_credentials = true
tempest_roles = admin
admin_username = admin
admin_project_name = admin
admin_password = admin
admin_domain_name = default
[baremetal]
[compute]
image_ref = CentOS--x86_64
flavor_ref =
flavor_ref_alt =
[compute-feature-enabled]
[dashboard]
dashboard_url = http://192.168.132.250/
login_url = http://192.168.132.250/auth/login/
[data-processing]
catalog_type = identity
[data-processing-feature-enabled]
[database]
[debug]
[identity]
uri = http://192.168.132.250:5000/v3
uri_v3 = http://192.168.132.250:5000/v3
auth_version = v3
username = admin
project_name = admin
in_role = admin
password = admin
domain_name = default
default_domain_id = default
[identity-feature-enabled]
api_v3 = true
[image]
[image-feature-enabled]
[input-scenario]
[negative]
[network]
[network-feature-enabled]
[object-storage]
[object-storage-feature-enabled]
[orchestration]
[oslo_concurrency]
[scenario]
[service_available]
[stress]
[telemetry]
[telemetry-feature-enabled]
[validation]
[volume]
[volume-feature-enabled]

2, 安装 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

   还需要安装一下模块。

pip install nose 

pip install oslo.log

pip install testrepository

pip install paramiko

  安装urllib3

wget https://pypi.python.org/packages/3b/f0/e763169124e3f5db0926bc3dbfcd580a105f9ca44cf5d8e6c7a803c9f6b5/urllib3-1.16.tar.gz#md5=fcaab1c5385c57deeb7053d3d7d81d59
tar xvf urllib3-1.16.tar.gz && cd urllib3-1.16/
python setup.py install

3, 初始化 Tempest

http://www.tuicool.com/articles/VzmInaR

4,Tempest Coding Guide

https://docs.openstack.org/developer/tempest/HACKING.html

5, 执行部分测试用例

testr run tempest.api.compute.admin.test_delete_server.py

6,运行测试
执行所有测试

nosetests tempest

执行某一个包下的测试

nosetests tempest/tests/identity

执行一个测试代码

nosetests tempest/api/identity/v3/test_projects.py  

Python学习总结 11 使用tempest测试OpenStack的更多相关文章

  1. 转 Python3 错误和异常/ Python学习之错误调试和测试

    ########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...

  2. python学习笔记11 ----线程、进程、协程

    进程.线程.协程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进 ...

  3. python学习笔记11 ----网络编程

    网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...

  4. Python学习:11.Python装饰器讲解(二)

    回顾 上一节我们进行了Python简单装饰器的讲解,但是python的装饰器还有一部分高级的使用方式,这一节就针对python装饰器高级部分进行讲解. 为一个函数添加多个装饰器 今天,老板又交给你一个 ...

  5. Python学习笔记(六)测试开发之接口开发

    Python的接口开发要使用到flask.Flask(__name__) 下面是一个简单的接口实例程序及访问效果: import flaskserver = flask.Flask(__name__) ...

  6. python学习笔记(11):文件的访问与函数式编程

    一.文本文件读写的三种方法 1.直接读入 file1 = open('E:/hello/hello.txt') file2 = open('output.txt','w') #w是可写的文件 whil ...

  7. python 学习笔记11(objgraph)

    33. objgraph objgraph是Python的一个第三方包.安装之前需要安装xdot. 用途 安装 例子

  8. Python学习(11)字典

    目录 Python 字典 访问字典中的值 修改字典 删除字典元素 字典键的特性 字典内置函数&方法 Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. ...

  9. Python学习笔记11—函数

    建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...

随机推荐

  1. 痞子衡嵌入式:常用的数据差错控制技术(1)- 重复校验(Repetition Code)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式里数据差错控制技术-重复校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口的支持 ...

  2. 超级账本fabric原理之gossip详解

    Goosip协议 去中心化.容错和最终一致性的算法 信息达到同步的最优时间:log(N). 功能: 节点发现 数据广播 gossip中有三种基本的操作: push - A节点将数据(key,value ...

  3. oracle账户登录数据库进行如下操作:

    CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT TABLESPACE "TBS_DNINMSV31" TEMPORA ...

  4. [PHP] foreach循环的引用赋值可能导致的问题

    foreach($arr as &$value)1.引用赋值符号&,是每次循环的时候,把当前元素变成地址,$value变量就是对应元素的地址,循环结束$value是一个指向最后一个元素 ...

  5. BN算法

    批量归一化(BN: Batch Normalization) 1 BN训练 1)随机梯度下降法(SGD)对于训练深度网络简单高效,但是它有个毛病,就是需要我们人为的去选择参数,比如学习率.参数初始化. ...

  6. WEB前端学习代码片段记录

    1.JS设计模式片段 Function.prototype.addMethod = function (name,fn) { this.prototype[name] = fn; return thi ...

  7. scrollTo不起作用

    最近,我在HorizontalScrollview中使用scrollTo不起作用? ...... 以上省略N个字. 我只想说: 在使用scrollTo的时候,要先保证该HorizontalScroll ...

  8. Android 为TV端助力

    记录两次事情: 第一个给view添加动画效果,需要保证view是可以获取焦点的 第二个给listview,GridView设置选择器 listselector时,要保证他的子item无背景,否则选择器 ...

  9. PM过程管理成熟度1级

    之前,我已经从项目实现的角度.企业管理诉求两方面,分析了PM的核心能力架构,以及其在过程管理方面的能力等级.接下来,Fancier凡奉信息会站在PM能力成长的角度,横向与纵向阐述每一成熟度等级PM的过 ...

  10. PJSUA2开发文档--第三章 PJSUA2高级API

    3. PJSUA2高级API PJSUA2是PJSUA API以上的面向对象抽象.它为构建会话发起协议(SIP)多媒体用户代理应用程序(也称为IP / VoIP软电话)提供高级API.它将信令,媒体和 ...