Use format options for functional tests

Use the format options for functional tests so we can have more
assertEquals and less assertIn.

Change-Id: I34e6c76b42964f7b596ea35e6b0354a242611cb4
This commit is contained in:
TerryHowe 2015-04-29 05:11:58 -06:00 committed by Terry Howe
parent d39b9c91c4
commit 29f29e44d3
3 changed files with 72 additions and 2 deletions

View File

@ -6,3 +6,4 @@ test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
test_id_option=--load-list $IDFILE
test_list_option=--list
group_regex=([^\.]+\.)+

View File

@ -28,12 +28,12 @@ EXAMPLE_DIR = os.path.join(ROOT_DIR, 'examples')
def execute(cmd, fail_ok=False, merge_stderr=False):
"""Executes specified command for the given action."""
cmd = shlex.split(cmd.encode('utf-8'))
cmdlist = shlex.split(cmd.encode('utf-8'))
result = ''
result_err = ''
stdout = subprocess.PIPE
stderr = subprocess.STDOUT if merge_stderr else subprocess.PIPE
proc = subprocess.Popen(cmd, stdout=stdout, stderr=stderr)
proc = subprocess.Popen(cmdlist, stdout=stdout, stderr=stderr)
result, result_err = proc.communicate()
if not fail_ok and proc.returncode != 0:
raise exceptions.CommandFailed(proc.returncode, cmd, result,
@ -50,6 +50,33 @@ class TestCase(testtools.TestCase):
"""Executes openstackclient command for the given action."""
return execute('openstack ' + cmd, fail_ok=fail_ok)
@classmethod
def get_show_opts(cls, fields=[]):
return ' -f value ' + ' '.join(['-c ' + it for it in fields])
@classmethod
def get_list_opts(cls, headers=[]):
opts = ' -f csv --quote none '
opts = opts + ' '.join(['-c ' + it for it in headers])
return opts
@classmethod
def assertOutput(cls, expected, actual):
if expected != actual:
raise Exception(expected + ' != ' + actual)
@classmethod
def assertInOutput(cls, expected, actual):
if expected not in actual:
raise Exception(expected + ' not in ' + actual)
@classmethod
def cleanup_tmpfile(cls, filename):
try:
os.remove(filename)
except OSError:
pass
def assert_table_structure(self, items, field_names):
"""Verify that all items have keys listed in field_names."""
for item in items:

View File

@ -0,0 +1,42 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import uuid
from functional.common import test
class ContainerTests(test.TestCase):
"""Functional tests for object containers. """
NAME = uuid.uuid4().hex
@classmethod
def setUpClass(cls):
opts = cls.get_list_opts(['container'])
raw_output = cls.openstack('container create ' + cls.NAME + opts)
expected = 'container\n' + cls.NAME + '\n'
cls.assertOutput(expected, raw_output)
@classmethod
def tearDownClass(cls):
raw_output = cls.openstack('container delete ' + cls.NAME)
cls.assertOutput('', raw_output)
def test_container_list(self):
opts = self.get_list_opts(['Name'])
raw_output = self.openstack('container list' + opts)
self.assertIn(self.NAME, raw_output)
def test_container_show(self):
opts = self.get_show_opts(['container'])
raw_output = self.openstack('container show ' + self.NAME + opts)
self.assertEqual(self.NAME + "\n", raw_output)