impl executor and leverage to test_pod.py in TestAPI 69/33169/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Mon, 10 Apr 2017 03:03:29 +0000 (11:03 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Thu, 13 Apr 2017 08:11:49 +0000 (16:11 +0800)
implement executor.py
leverage executor to test_pod.py

Change-Id: Ief70a28a935c86430e26f90f35112a7bab9fa81b
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
utils/test/testapi/opnfv_testapi/tests/unit/executor.py [new file with mode: 0644]
utils/test/testapi/opnfv_testapi/tests/unit/test_pod.py

diff --git a/utils/test/testapi/opnfv_testapi/tests/unit/executor.py b/utils/test/testapi/opnfv_testapi/tests/unit/executor.py
new file mode 100644 (file)
index 0000000..b30c325
--- /dev/null
@@ -0,0 +1,83 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corp
+# feng.xiaowei@zte.com.cn
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+import functools
+import httplib
+
+
+def create(excepted_status, excepted_response):
+    def _create(create_request):
+        @functools.wraps(create_request)
+        def wrap(self):
+            request = create_request(self)
+            status, body = self.create(request)
+            if excepted_status == httplib.OK:
+                getattr(self, excepted_response)(body)
+            else:
+                self.assertIn(excepted_response, body)
+        return wrap
+    return _create
+
+
+def get(excepted_status, excepted_response):
+    def _get(get_request):
+        @functools.wraps(get_request)
+        def wrap(self):
+            request = get_request(self)
+            status, body = self.get(request)
+            if excepted_status == httplib.OK:
+                getattr(self, excepted_response)(body)
+            else:
+                self.assertIn(excepted_response, body)
+        return wrap
+    return _get
+
+
+def update(excepted_status, excepted_response):
+    def _update(update_request):
+        @functools.wraps(update_request)
+        def wrap(self):
+            request, resource = update_request(self)
+            status, body = self.update(request, resource)
+            if excepted_status == httplib.OK:
+                getattr(self, excepted_response)(request, body)
+            else:
+                self.assertIn(excepted_response, body)
+        return wrap
+    return _update
+
+
+def delete(excepted_status, excepted_response):
+    def _delete(delete_request):
+        @functools.wraps(delete_request)
+        def wrap(self):
+            request = delete_request(self)
+            if isinstance(request, tuple):
+                status, body = self.delete(request[0], *(request[1]))
+            else:
+                status, body = self.delete(request)
+            if excepted_status == httplib.OK:
+                getattr(self, excepted_response)(body)
+            else:
+                self.assertIn(excepted_response, body)
+        return wrap
+    return _delete
+
+
+def query(excepted_status, excepted_response, number=0):
+    def _query(get_request):
+        @functools.wraps(get_request)
+        def wrap(self):
+            request = get_request(self)
+            status, body = self.query(request)
+            if excepted_status == httplib.OK:
+                getattr(self, excepted_response)(body, number)
+            else:
+                self.assertIn(excepted_response, body)
+        return wrap
+    return _query
index c2c1414..0ed348d 100644 (file)
@@ -11,6 +11,7 @@ import unittest
 
 from opnfv_testapi.common import message
 from opnfv_testapi.resources import pod_models
+from opnfv_testapi.tests.unit import executor
 from opnfv_testapi.tests.unit import test_base as base
 
 
@@ -36,48 +37,47 @@ class TestPodBase(base.TestBase):
 
 
 class TestPodCreate(TestPodBase):
+    @executor.create(httplib.BAD_REQUEST, message.no_body())
     def test_withoutBody(self):
-        (code, body) = self.create()
-        self.assertEqual(code, httplib.BAD_REQUEST)
+        return None
 
+    @executor.create(httplib.BAD_REQUEST, message.missing('name'))
     def test_emptyName(self):
-        req_empty = pod_models.PodCreateRequest('')
-        (code, body) = self.create(req_empty)
-        self.assertEqual(code, httplib.BAD_REQUEST)
-        self.assertIn(message.missing('name'), body)
+        return pod_models.PodCreateRequest('')
 
+    @executor.create(httplib.BAD_REQUEST, message.missing('name'))
     def test_noneName(self):
-        req_none = pod_models.PodCreateRequest(None)
-        (code, body) = self.create(req_none)
-        self.assertEqual(code, httplib.BAD_REQUEST)
-        self.assertIn(message.missing('name'), body)
+        return pod_models.PodCreateRequest(None)
 
+    @executor.create(httplib.OK, 'assert_create_body')
     def test_success(self):
-        code, body = self.create_d()
-        self.assertEqual(code, httplib.OK)
-        self.assert_create_body(body)
+        return self.req_d
 
+    @executor.create(httplib.FORBIDDEN, message.exist_base)
     def test_alreadyExist(self):
         self.create_d()
-        code, body = self.create_d()
-        self.assertEqual(code, httplib.FORBIDDEN)
-        self.assertIn(message.exist_base, body)
+        return self.req_d
 
 
 class TestPodGet(TestPodBase):
+    def setUp(self):
+        super(TestPodGet, self).setUp()
+        self.create_d()
+        self.create_e()
+
+    @executor.get(httplib.NOT_FOUND, message.not_found_base)
     def test_notExist(self):
-        code, body = self.get('notExist')
-        self.assertEqual(code, httplib.NOT_FOUND)
+        return 'notExist'
 
+    @executor.get(httplib.OK, 'assert_get_body')
     def test_getOne(self):
-        self.create_d()
-        code, body = self.get(self.req_d.name)
-        self.assert_get_body(body)
+        return self.req_d.name
 
+    @executor.get(httplib.OK, '_assert_list')
     def test_list(self):
-        self.create_d()
-        self.create_e()
-        code, body = self.get()
+        return None
+
+    def _assert_list(self, body):
         self.assertEqual(len(body.pods), 2)
         for pod in body.pods:
             if self.req_d.name == pod.name: