Modify TestCase.__str__() to use PrettyTable 87/34587/3
authorCédric Ollivier <cedric.ollivier@orange.com>
Thu, 11 May 2017 08:03:47 +0000 (10:03 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Thu, 11 May 2017 11:45:23 +0000 (13:45 +0200)
It adds PrettyTable as requirement even if it's already defined in
OpenStack client dependencies.

If the TestCase object is considered as invalid, it simply returns the
default str.

Change-Id: Iee788aef2a13694d9482560977cbbf21c7f2c967
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/core/testcase.py
functest/tests/unit/core/test_testcase.py
requirements.txt
test-requirements.txt

index 49fae60..317c4f5 100644 (file)
@@ -12,6 +12,8 @@
 import logging
 import os
 
+import prettytable
+
 import functest.utils.functest_utils as ft_utils
 
 __author__ = "Cedric Ollivier <cedric.ollivier@orange.com>"
@@ -49,14 +51,16 @@ class TestCase(object):
             assert self.case_name
             result = 'PASS' if(self.is_successful(
                 ) == TestCase.EX_OK) else 'FAIL'
-            return ('| {0:<23} | {1:<13} | {2:<10} | {3:<13} |'
-                    '\n{4:-<26}{4:-<16}{4:-<13}{4:-<16}{4}'.format(
-                        self.case_name, self.project_name,
-                        self.get_duration(), result, '+'))
+            msg = prettytable.PrettyTable(
+                header_style='upper',
+                field_names=['test case', 'project', 'duration',
+                             'result'])
+            msg.add_row([self.case_name, self.project_name,
+                         self.get_duration(), result])
+            return msg.get_string()
         except AssertionError:
             self.__logger.error("We cannot print invalid objects")
-            return '| {0:^68} |\n{1:-<26}{1:-<16}{1:-<13}{1:-<16}{1}'.format(
-                'INVALID OBJECT', '+')
+            return super(TestCase, self).__str__()
 
     def get_duration(self):
         """Return the duration of the test case.
index b25ce22..08a717a 100644 (file)
@@ -191,11 +191,13 @@ class TestCaseTesting(unittest.TestCase):
 
     def test_str_project_name_ko(self):
         self.test.project_name = None
-        self.assertIn("INVALID OBJECT", str(self.test))
+        self.assertIn("<functest.core.testcase.TestCase object at",
+                      str(self.test))
 
     def test_str_case_name_ko(self):
         self.test.case_name = None
-        self.assertIn("INVALID OBJECT", str(self.test))
+        self.assertIn("<functest.core.testcase.TestCase object at",
+                      str(self.test))
 
     def test_str_pass(self):
         duration = '01:01'
index e709220..59274ec 100644 (file)
@@ -33,3 +33,4 @@ click==6.6
 openbaton-cli==2.2.1-beta7
 mock==1.3.0
 iniparse==0.4
+PrettyTable>=0.7.1,<0.8 # BSD
index 471e9c3..f68a56f 100644 (file)
@@ -26,3 +26,4 @@ robotframework-requests==0.3.8
 robotframework-sshlibrary==2.1.1
 subprocess32==3.2.7
 virtualenv==15.1.0
+PrettyTable>=0.7.1,<0.8 # BSD