simplify test_pod.py with eq 23/49923/2
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Wed, 3 Jan 2018 09:50:53 +0000 (17:50 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Thu, 4 Jan 2018 08:55:40 +0000 (16:55 +0800)
Change-Id: I1efd519f877d48499dcd98a420b90a1b5d4c488f
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
testapi/opnfv_testapi/models/base_models.py
testapi/opnfv_testapi/models/pod_models.py
testapi/opnfv_testapi/tests/unit/handlers/test_base.py
testapi/opnfv_testapi/tests/unit/handlers/test_pod.py

index cd437d9..efce0ad 100644 (file)
@@ -24,7 +24,8 @@ class ModelBase(object):
 
     def __eq__(self, other):
         res = all(getattr(self, k) == getattr(other, k)
-                  for k in self.format().keys() if k != '_id')
+                  for k in self.format().keys()
+                  if k not in ['_id', 'creation_date'])
         return res
 
     def format(self):
@@ -41,15 +42,16 @@ class ModelBase(object):
         attr_parser = cls.attr_parser()
         t = cls()
         for k, v in a_dict.iteritems():
-            value = v
-            if isinstance(v, dict) and k in attr_parser:
-                value = attr_parser[k].from_dict(v)
-            elif isinstance(v, list) and k in attr_parser:
-                value = []
-                for item in v:
-                    value.append(attr_parser[k].from_dict(item))
-
-            t.__setattr__(k, value)
+            if k in t.__dict__:
+                value = v
+                if isinstance(v, dict) and k in attr_parser:
+                    value = attr_parser[k].from_dict(v)
+                elif isinstance(v, list) and k in attr_parser:
+                    value = []
+                    for item in v:
+                        value.append(attr_parser[k].from_dict(item))
+
+                t.__setattr__(k, value)
 
         return t
 
index 15c2833..0eddfcc 100644 (file)
@@ -18,7 +18,7 @@ from opnfv_testapi.tornado_swagger import swagger
 
 @swagger.model()
 class PodCreateRequest(base_models.ModelBase):
-    def __init__(self, name, mode='', details='', role=""):
+    def __init__(self, name='', mode='', details='', role=""):
         self.name = name
         self.mode = mode
         self.details = details
@@ -26,17 +26,12 @@ class PodCreateRequest(base_models.ModelBase):
 
 
 @swagger.model()
-class Pod(base_models.ModelBase):
-    def __init__(self,
-                 name='', mode='', details='',
-                 role="", _id='', create_date='', owner=''):
-        self.name = name
-        self.mode = mode
-        self.details = details
-        self.role = role
-        self._id = _id
-        self.creation_date = create_date
-        self.owner = owner
+class Pod(PodCreateRequest):
+    def __init__(self, **kwargs):
+        self._id = kwargs.pop('_id', '')
+        self.creation_date = kwargs.pop('creation_date', '')
+        self.owner = kwargs.pop('owner', '')
+        super(Pod, self).__init__(**kwargs)
 
 
 @swagger.model()
index c98ed69..6436b8b 100644 (file)
@@ -36,14 +36,14 @@ class TestBase(testing.AsyncHTTPTestCase):
                                     role='community-ci',
                                     _id=str(ObjectId()),
                                     owner='ValidUser',
-                                    create_date=str(datetime.now()))
+                                    creation_date=str(datetime.now()))
         self.pod_e = pod_models.Pod(name='zte-pod2',
                                     mode='metal',
                                     details='zte pod 2',
                                     role='production-ci',
                                     _id=str(ObjectId()),
                                     owner='ValidUser',
-                                    create_date=str(datetime.now()))
+                                    creation_date=str(datetime.now()))
         self.project_e = project_models.Project(
             name='functest',
             description='functest test',
index 95ed8ba..2818513 100644 (file)
@@ -7,10 +7,9 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 import httplib
-import unittest
 
 from opnfv_testapi.common import message
-from opnfv_testapi.models import pod_models
+from opnfv_testapi.models import pod_models as pm
 from opnfv_testapi.tests.unit import executor
 from opnfv_testapi.tests.unit import fake_pymongo
 from opnfv_testapi.tests.unit.handlers import test_base as base
@@ -19,26 +18,16 @@ from opnfv_testapi.tests.unit.handlers import test_base as base
 class TestPodBase(base.TestBase):
     def setUp(self):
         super(TestPodBase, self).setUp()
-        self.get_res = pod_models.Pod
-        self.list_res = pod_models.Pods
+        self.get_res = pm.Pod
+        self.list_res = pm.Pods
         self.basePath = '/api/v1/pods'
-        self.req_d = pod_models.PodCreateRequest(name=self.pod_d.name,
-                                                 mode=self.pod_d.mode,
-                                                 details=self.pod_d.details,
-                                                 role=self.pod_d.role)
-        self.req_e = pod_models.PodCreateRequest(name=self.pod_e.name,
-                                                 mode=self.pod_e.mode,
-                                                 details=self.pod_e.details,
-                                                 role=self.pod_e.role)
+        self.req_d = pm.PodCreateRequest.from_dict(self.pod_d.format())
+        self.req_e = pm.PodCreateRequest.from_dict(self.pod_e.format())
 
     def assert_get_body(self, pod, req=None):
         if not req:
             req = self.req_d
-        self.assertEqual(pod.owner, 'ValidUser')
-        self.assertEqual(pod.name, req.name)
-        self.assertEqual(pod.mode, req.mode)
-        self.assertEqual(pod.details, req.details)
-        self.assertEqual(pod.role, req.role)
+        self.assertEqual(pod, pm.Pod(owner='ValidUser', **req.format()))
         self.assertIsNotNone(pod.creation_date)
         self.assertIsNotNone(pod._id)
 
@@ -61,12 +50,12 @@ class TestPodCreate(TestPodBase):
     @executor.mock_valid_lfid()
     @executor.create(httplib.BAD_REQUEST, message.missing('name'))
     def test_emptyName(self):
-        return pod_models.PodCreateRequest('')
+        return pm.PodCreateRequest('')
 
     @executor.mock_valid_lfid()
     @executor.create(httplib.BAD_REQUEST, message.missing('name'))
     def test_noneName(self):
-        return pod_models.PodCreateRequest(None)
+        return pm.PodCreateRequest(None)
 
     @executor.mock_valid_lfid()
     @executor.create(httplib.OK, 'assert_create_body')
@@ -99,7 +88,7 @@ class TestPodGet(TestPodBase):
 
     @executor.get(httplib.OK, 'assert_get_body')
     def test_getOne(self):
-        return self.pod_d.name
+        return self.req_d.name
 
     @executor.get(httplib.OK, '_assert_list')
     def test_list(self):
@@ -108,11 +97,7 @@ class TestPodGet(TestPodBase):
     def _assert_list(self, body):
         self.assertEqual(len(body.pods), 2)
         for pod in body.pods:
-            if self.pod_d.name == pod.name:
+            if self.req_d.name == pod.name:
                 self.assert_get_body(pod)
             else:
-                self.assert_get_body(pod, self.pod_e)
-
-
-if __name__ == '__main__':
-    unittest.main()
+                self.assert_get_body(pod, self.req_e)