Murano/TestsDocumentation
Murano 自动化测试描述
此页面描述了 OpenStack Murano 项目的自动化测试:如何下载和运行测试,如何理解失败测试的根本原因,以及每个提交执行的详细测试描述。
Murano 持续集成服务
Murano 项目拥有 CI 服务器,它会测试 Murano 组件的所有提交,并允许验证新代码不会破坏任何功能。
Murano CI 使用 OpenStack QA 云作为测试基础设施。
Murano CI URL: murano-ci.mirantis.com
对于每个仓库,都有两个任务:一个在 Ubuntu 上运行,另一个在 CentOS 上运行。
您可以在这里看到具有不同目标的几个 Jenkins 任务
- 任务 'murano-dashboard-integration-tests-*' 允许验证对 murano-dashboard 仓库的每个提交在不同发行版上的情况。
- 任务 'murano-engine-app-deployment-tests-*' 允许验证对 murano 仓库的每个提交在不同发行版上的情况
其他任务允许构建和测试 Murano 文档,并执行其他有用的工作以支持 Murano CI 基础设施。
Murano 自动化测试:UI 测试
Murano 项目具有 Web 用户界面,并且我们拥有 Murano Web UI 的测试套件。所有 UI 测试都位于 murano-dashboard 仓库 中。
所有 Murano Web UI 的自动化测试都使用高级 Selenium 库编写,该库允许使用字段标题和其他信息查找 Web 元素,而无需/使用 xpath。
如何运行
先决条件
使用以下命令安装 nose
- easy_install nose
- 或者
- pip install nose
这将安装 nose 库,以及 nosetests 脚本,您可以使用它来自动发现和运行测试。
安装 Murano Web UI 测试所需的外部 python 库
- testtools
- selenium.
cloud computing openstack
下载并运行
确保已安装其他组件。
- 克隆 murano-dashboard git 仓库
- 首先,需要在 functionaltests/config/config_file.conf 中更改默认设置,设置适当的 URL 和凭据。
[common] horizon_url = http://127.0.0.1/horizon murano_url = http://127.0.0.1:8082 user = WebTestUser password = swordfish tenant = WebTestProject keystone_url = http://127.0.0.1:5000/v2.0/
- 转到存储测试的 "functionaltests" 目录
- 部分测试使用应用程序目录,并为此上传一组应用程序包。要从特殊的 Murano 仓库上传一组标准包,需要创建并执行以下脚本,该脚本会克隆包含包的仓库,对其进行归档并将其存储在 'functionaltests' 文件夹中
git_url="https://github.com/murano-project/murano-app-incubator" clone_dir="murano-app-incubator" git clone $git_url $clone_dir cd $clone_dir for package_dir in io.murano.* do if [ -d "$package_dir" ]; then if [ -f "${package_dir}/manifest.yaml" ]; then sudo bash make-package.sh $package_dir fi fi done
- 所有准备工作完成。
- 所有测试都分组为几个套件,要指定要运行的测试/套件,请在命令行中传递测试/套件名称
- 要运行所有测试:nosetests sanity_check.py
- 要运行一个套件:nosetests sanity_check.py:<test suite name>
- 要运行一个测试:nosetests sanity_check.py:<test suite name>.<test name>
如果成功,您应该看到类似以下内容
..................................
Ran 34 tests in 1.440s
OK
还有许多命令行选项可用于控制测试执行和生成的输出。有关 nosetests 的许多命令行选项的帮助,请尝试
- nosetests -h
Murano 自动化测试:Tempest 测试
所有 Murano 服务都有基于 tempest 的自动化测试,这些测试允许验证 API 接口和部署场景。
Murano 的 Tempest 测试位于:基本仓库
以下 Python 文件包含针对不同 Murano 组件的基本测试套件。
在 devstack gate 上运行的 API 上的测试 API 测试
- test_murano_envs.py 包含一个测试套件,其中包含对 murano 环境的操作(创建、删除、获取等)
- test_murano_sessions.py 包含一个测试套件,其中包含对 murano 会话的操作(创建、删除、获取等)
- test_murano_services.py 包含一个测试套件,其中包含对 murano 服务的操作(创建、删除、获取等)
- test_murano_repository.py 包含一个测试套件,其中包含对 murano 包仓库的操作
在 murano-ci 上运行的引擎上的测试 引擎测试
- base.py 包含基本测试类和对部署 murano 服务的测试
如果您想知道此测试执行了哪些步骤,您可以查看代码中的测试场景中的注释。例如
@attr(type='smoke')
def test_get_environment(self):
"""
Get environment by id
Test create environment, afterthat test try to get
environment's info, using environment's id,
and finally delete this environment
Target component: Murano
Scenario:
1. Send request to create environment.
2. Send request to get environment
3. Send request to delete environment
"""
resp, env = self.create_environment('test')
self.environments.append(env)
resp, infa = self.get_environment_by_id(env['id'])
self.assertEqual(200, resp.status)
self.assertEqual('test', infa['name'])
self.delete_environment(env['id'])
self.environments.pop(self.environments.index(env))