bugfix: access results failed of Test API 63/26463/2
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Fri, 23 Dec 2016 07:31:14 +0000 (15:31 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Fri, 23 Dec 2016 07:36:43 +0000 (15:36 +0800)
File "/Users/fengxiaowei/opnfv/releng/utils/test/testapi/venv/lib/python2.7/site-packages/opnfv_testapi/resources/models.py", line 47, in format_http
return self._format([])
File "/Users/fengxiaowei/opnfv/releng/utils/test/testapi/venv/lib/python2.7/site-packages/opnfv_testapi/resources/models.py", line 37, in _format
hs.append(h.format())
AttributeError: 'dict' object has no attribute 'format'

JIRA: FUNCTEST-676

Change-Id: I9d8d8a31e5580be51fb690628a03d452742f12d4
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/test/testapi/opnfv_testapi/resources/models.py
utils/test/testapi/opnfv_testapi/tests/unit/test_result.py

index c85c1d5..a281c66 100644 (file)
@@ -24,7 +24,6 @@ class ModelBase(object):
     def _format(self, excludes):\r
         new_obj = copy.deepcopy(self)\r
         dicts = new_obj.__dict__\r
-        print self, self.__class__\r
         for k in dicts.keys():\r
             if k in excludes:\r
                 del dicts[k]\r
@@ -32,9 +31,9 @@ class ModelBase(object):
                 if hasattr(dicts[k], 'format'):\r
                     dicts[k] = dicts[k].format()\r
                 elif isinstance(dicts[k], list):\r
-                    hs = []\r
-                    for h in dicts[k]:\r
-                        hs.append(h.format())\r
+                    hs = list()\r
+                    [hs.append(h.format() if hasattr(h, 'format') else str(h))\r
+                     for h in dicts[k]]\r
                     dicts[k] = hs\r
                 elif not isinstance(dicts[k], (str, int, float, dict)):\r
                     dicts[k] = str(dicts[k])\r
index 8479b35..10575a9 100644 (file)
@@ -25,12 +25,14 @@ class Details(object):
         self.timestart = timestart
         self.duration = duration
         self.status = status
+        self.items = [{'item1': 1}, {'item2': 2}]
 
     def format(self):
         return {
             "timestart": self.timestart,
             "duration": self.duration,
-            "status": self.status
+            "status": self.status,
+            'items': [{'item1': 1}, {'item2': 2}]
         }
 
     @staticmethod
@@ -43,6 +45,7 @@ class Details(object):
         t.timestart = a_dict.get('timestart')
         t.duration = a_dict.get('duration')
         t.status = a_dict.get('status')
+        t.items = a_dict.get('items')
         return t
 
 
@@ -104,6 +107,7 @@ class TestResultBase(TestBase):
         self.assertEqual(details_res.duration, details_req.duration)
         self.assertEqual(details_res.timestart, details_req.timestart)
         self.assertEqual(details_res.status, details_req.status)
+        self.assertEqual(details_res.items, details_req.items)
         self.assertEqual(result.build_tag, req.build_tag)
         self.assertEqual(result.scenario, req.scenario)
         self.assertEqual(result.criteria, req.criteria)