Python学习总结 11 使用tempest测试OpenStack
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的更多相关文章
- 转 Python3 错误和异常/ Python学习之错误调试和测试
########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...
- python学习笔记11 ----线程、进程、协程
进程.线程.协程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进 ...
- python学习笔记11 ----网络编程
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. ...
- Python学习:11.Python装饰器讲解(二)
回顾 上一节我们进行了Python简单装饰器的讲解,但是python的装饰器还有一部分高级的使用方式,这一节就针对python装饰器高级部分进行讲解. 为一个函数添加多个装饰器 今天,老板又交给你一个 ...
- Python学习笔记(六)测试开发之接口开发
Python的接口开发要使用到flask.Flask(__name__) 下面是一个简单的接口实例程序及访问效果: import flaskserver = flask.Flask(__name__) ...
- python学习笔记(11):文件的访问与函数式编程
一.文本文件读写的三种方法 1.直接读入 file1 = open('E:/hello/hello.txt') file2 = open('output.txt','w') #w是可写的文件 whil ...
- python 学习笔记11(objgraph)
33. objgraph objgraph是Python的一个第三方包.安装之前需要安装xdot. 用途 安装 例子
- Python学习(11)字典
目录 Python 字典 访问字典中的值 修改字典 删除字典元素 字典键的特性 字典内置函数&方法 Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. ...
- Python学习笔记11—函数
建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...
随机推荐
- [十七]基础类型BigDecimal简介
BigDecimal是不可变的.任意精度的.有符号的.十进制数. 组成部分 BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成 BigDecimal ...
- Centos 7.0 zabbix 部署
1.LAMP 环境搭建 初次安装可以先关闭selinux 和 firewall [root@localhost ~]# setenforce [root@localhost ~]# systemctl ...
- [SRM603] WinterAndSnowmen
Description Sol 设 \(A=\text{XOR}(X)\),\(B=\text{XOR}(Y)\). 因为 \(A<B\),所以写下他们的二进制表示,一定是最高的几位先是相等,紧 ...
- 基于Dockerfile镜像制作的基本操作
一.使用Dockerfile制作镜像 前面的博客中已经介绍了如何基于容器制作镜像,此方法的原理是使用一个正在运行的容器,根据生产所需进行配置更改等操作后,使其满足生产环境,再将这个容器打包制作为镜像, ...
- Docker快速搭建LNMP环境
一.使用Dockerfile制作镜像 前面的博客中已经介绍了如何基于容器制作镜像,此方法的原理是使用一个正在运行的容器,根据生产所需进行配置更改等操作后,使其满足生产环境,再将这个容器打包制作为镜像, ...
- [JavaScript] audio在浏览器中自动播放
audio 在浏览器中自动播放 autoplay 属性 autoplay 属性规定一旦音频就绪马上开始播放. 如果设置了该属性,音频将自动播放. 使用 autoplay 属性进行播放 //使用auto ...
- Java开发笔记(二十五)方法的输入参数
前面通过main方法介绍了方法的定义形式,对于方法的输入参数来说,还有几个值得注意的地方,接下来分别对输入参数的几种用法进行阐述.一个方法可以有输入参数,也可以没有输入参数,倘若无需输入参数,则方法定 ...
- PHP基础:MYSQL数据库操作
1.连接到数据库: · 面向对象的方法: $db = new mysqli('hostname', 'username', 'password', 'dbname'); · 面向过程的方法: $db ...
- 常见六大Web安全攻防解析
前言 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷.如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法. 想阅读更多优质原创文章请猛 ...
- Flutter数据持久化入门以及与Web开发的对比
对于大部分安卓或者IOS开发人员来说,App的数据持久化可能是很平常的一个话题.但是对于Web开发人员来说,可能紧紧意味着localStorage和sessionStorage. Web开发 loca ...