From f0a3b175a1a7a8d537f6f8023dd8ff8155375f60 Mon Sep 17 00:00:00 2001
From: Tang Chen <tangchen@cn.fujitsu.com>
Date: Mon, 28 Dec 2015 17:28:04 +0800
Subject: [PATCH] Refactor: Initialize parser in setUp() in TestKeyValueAction

No need to initialize parser in each test case. Do it in setUp().
Also remove the test_default_values case because it could be tested
in the test_good_values case.

Change-Id: Ia2ed7c9e46bf6baabbd62b9d50511c5e8103e5e2
---
 .../tests/common/test_parseractions.py        | 65 ++++---------------
 1 file changed, 11 insertions(+), 54 deletions(-)

diff --git a/openstackclient/tests/common/test_parseractions.py b/openstackclient/tests/common/test_parseractions.py
index 0afbdb7af7..0d9961bcb1 100644
--- a/openstackclient/tests/common/test_parseractions.py
+++ b/openstackclient/tests/common/test_parseractions.py
@@ -20,34 +20,14 @@ from openstackclient.tests import utils
 
 
 class TestKeyValueAction(utils.TestCase):
-    def test_good_values(self):
-        parser = argparse.ArgumentParser()
+
+    def setUp(self):
+        super(TestKeyValueAction, self).setUp()
+
+        self.parser = argparse.ArgumentParser()
 
         # Set up our typical usage
-        parser.add_argument(
-            '--property',
-            metavar='<key=value>',
-            action=parseractions.KeyValueAction,
-            help='Property to store for this volume '
-                 '(repeat option to set multiple properties)',
-        )
-
-        results = parser.parse_args([
-            '--property', 'red=',
-            '--property', 'green=100%',
-            '--property', 'blue=50%',
-        ])
-
-        actual = getattr(results, 'property', {})
-        # All should pass through unmolested
-        expect = {'red': '', 'green': '100%', 'blue': '50%'}
-        self.assertDictEqual(expect, actual)
-
-    def test_default_values(self):
-        parser = argparse.ArgumentParser()
-
-        # Set up our typical usage
-        parser.add_argument(
+        self.parser.add_argument(
             '--property',
             metavar='<key=value>',
             action=parseractions.KeyValueAction,
@@ -56,52 +36,29 @@ class TestKeyValueAction(utils.TestCase):
                  '(repeat option to set multiple properties)',
         )
 
-        results = parser.parse_args([
+    def test_good_values(self):
+        results = self.parser.parse_args([
             '--property', 'red=',
             '--property', 'green=100%',
             '--property', 'blue=50%',
         ])
 
         actual = getattr(results, 'property', {})
-        # Verify green default is changed, format default is unchanged
+        # All should pass through unmolested
         expect = {'red': '', 'green': '100%', 'blue': '50%', 'format': '#rgb'}
         self.assertDictEqual(expect, actual)
 
     def test_error_values(self):
-        parser = argparse.ArgumentParser()
-
-        # Set up our typical usage
-        parser.add_argument(
-            '--property',
-            metavar='<key=value>',
-            action=parseractions.KeyValueAction,
-            default={'green': '20%', 'blue': '40%'},
-            help='Property to store for this volume '
-                 '(repeat option to set multiple properties)',
-        )
-
-        results = parser.parse_args([
+        results = self.parser.parse_args([
             '--property', 'red',
             '--property', 'green=100%',
             '--property', 'blue',
         ])
 
-        failhere = None
         actual = getattr(results, 'property', {})
-        # Verify non-existent red key
-        try:
-            failhere = actual['red']
-        except Exception as e:
-            self.assertTrue(type(e) == KeyError)
-        # Verify removal of blue key
-        try:
-            failhere = actual['blue']
-        except Exception as e:
-            self.assertTrue(type(e) == KeyError)
         # There should be no red or blue
-        expect = {'green': '100%'}
+        expect = {'green': '100%', 'format': '#rgb'}
         self.assertDictEqual(expect, actual)
-        self.assertIsNone(failhere)
 
 
 class TestNonNegativeAction(utils.TestCase):