Generate Html and Xunit Behave reports 18/68818/2
authorCédric Ollivier <cedric.ollivier@orange.com>
Sat, 9 Nov 2019 11:28:24 +0000 (12:28 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Sat, 9 Nov 2019 12:03:37 +0000 (13:03 +0100)
Change-Id: I7d5f31502ba61b61a0b1c885fe8828211bc0bc0a
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
(cherry picked from commit 728f5c95df4d3edbe6b3f814a270cdf3b532aef9)

requirements.txt
upper-constraints.txt
xtesting/core/behaveframework.py
xtesting/tests/unit/core/test_behaveframework.py

index d70dba3..3d583d5 100644 (file)
@@ -8,6 +8,7 @@ enum34;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' #
 requests!=2.20.0 # Apache-2.0
 robotframework>=3.0
 behave>=1.2.6
+behave-html-formatter>=0.9.4;python_version>='3.5'
 mock # BSD
 PrettyTable<0.8 # BSD
 six # MIT
index bcf55eb..1c35e41 100644 (file)
@@ -1,5 +1,6 @@
 robotframework===3.1.1
 bandit===1.1.0
 behave===1.2.6
+behave-html-formatter===0.9.4;python_version>='3.5'
 pylint===1.9.5;python_version=='2.7'
 pylint===2.3.1;python_version=='3.7'
index 25986f4..ede3883 100644 (file)
@@ -14,7 +14,9 @@ from __future__ import division
 import logging
 import os
 import time
+
 import json
+import six
 
 from behave.__main__ import main as behave_main
 
@@ -102,8 +104,12 @@ class BehaveFramework(testcase.TestCase):
                 self.__logger.exception("Cannot create %s", self.res_dir)
                 return self.EX_RUN_ERROR
         config = ['--tags='+','.join(tags),
-                  '--format=json',
-                  '--outfile='+self.json_file]
+                  '--junit', '--junit-directory={}'.format(self.res_dir),
+                  '--format=json', '--outfile={}'.format(self.json_file)]
+        if six.PY3:
+            html_file = os.path.join(self.res_dir, 'output.html')
+            config += ['--format=behave_html_formatter:HTMLFormatter',
+                       '--outfile={}'.format(html_file)]
         for feature in suites:
             config.append(feature)
         self.start_time = time.time()
index 70ca973..c4ab2f7 100644 (file)
 """Define the classes required to fully cover behave."""
 
 import logging
+import os
 import unittest
 
 import mock
+import six
+
 from xtesting.core import behaveframework
 
 __author__ = "Deepak Chandella <deepak.chandella@orange.com>"
@@ -115,11 +118,17 @@ class RunTesting(unittest.TestCase):
             self.assertEqual(
                 self.test.run(suites=self.suites, tags=self.tags),
                 self.test.EX_OK)
-            args[0].assert_called_once_with(
-                ['--tags=',
-                 '--format=json',
-                 '--outfile={}'.format(self.test.json_file),
-                 'foo'])
+            html_file = os.path.join(self.test.res_dir, 'output.html')
+            args_list = [
+                '--tags=', '--junit',
+                '--junit-directory={}'.format(self.test.res_dir),
+                '--format=json', '--outfile={}'.format(self.test.json_file)]
+            if six.PY3:
+                args_list += [
+                    '--format=behave_html_formatter:HTMLFormatter',
+                    '--outfile={}'.format(html_file)]
+            args_list.append('foo')
+            args[0].assert_called_once_with(args_list)
             mock_method.assert_called_once_with()
 
     @mock.patch('os.makedirs')
@@ -143,11 +152,17 @@ class RunTesting(unittest.TestCase):
             self.test.run(
                 suites=self.suites, tags=self.tags),
             status)
-        args[0].assert_called_once_with(
-            ['--tags=',
-             '--format=json',
-             '--outfile={}'.format(self.test.json_file),
-             'foo'])
+        html_file = os.path.join(self.test.res_dir, 'output.html')
+        args_list = [
+            '--tags=', '--junit',
+            '--junit-directory={}'.format(self.test.res_dir),
+            '--format=json', '--outfile={}'.format(self.test.json_file)]
+        if six.PY3:
+            args_list += [
+                '--format=behave_html_formatter:HTMLFormatter',
+                '--outfile={}'.format(html_file)]
+        args_list.append('foo')
+        args[0].assert_called_once_with(args_list)
         args[1].assert_called_once_with(self.test.res_dir)
 
     def test_parse_results_exc(self):