Пример #1
0
 def test_xmlrunner_buffer_output_pass(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_runner_buffer_output_pass'))
     self._test_xmlrunner(suite)
     testsuite_output = self.stream.getvalue()
     # Since we are always buffering stdout/stderr
     # it is currently troublesome to print anything at all
     # and be consistent with --buffer option (issue #59)
     self.assertIn('should not be printed', testsuite_output)
Пример #2
0
 def test_basic_unittest_constructs(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     suite.addTest(self.DummyTest('test_skip'))
     suite.addTest(self.DummyTest('test_fail'))
     suite.addTest(self.DummyTest('test_expected_failure'))
     suite.addTest(self.DummyTest('test_unexpected_success'))
     suite.addTest(self.DummyTest('test_error'))
     self._test_xmlrunner(suite)
Пример #3
0
 def test_xmlrunner_output_subdir(self):
     stream = self.stream
     output = os.path.join(self.outdir, 'subdir')
     runner = xmlrunner.XMLTestRunner(stream=stream,
                                      output=output,
                                      verbosity=self.verbosity,
                                      **self.runner_kwargs)
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     runner.run(suite)
Пример #4
0
 def test_xmlrunner_stream(self):
     stream = self.stream
     output = BytesIO()
     runner = xmlrunner.XMLTestRunner(stream=stream,
                                      output=output,
                                      verbosity=self.verbosity,
                                      **self.runner_kwargs)
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     runner.run(suite)
Пример #5
0
    def test_unexpected_success(self):
        suite = unittest.TestSuite()
        suite.addTest(self.DummyTest('test_unexpected_success'))
        outdir = BytesIO()

        self._test_xmlrunner(suite, outdir=outdir)

        self.assertNotIn(b'<failure', outdir.getvalue())
        self.assertIn(b'<error', outdir.getvalue())
        self.assertNotIn(b'<skip', outdir.getvalue())
Пример #6
0
 def test_xmlrunner_patched_stdout(self):
     old_stdout, old_stderr = sys.stdout, sys.stderr
     try:
         sys.stdout, sys.stderr = StringIO(), StringIO()
         suite = unittest.TestSuite()
         suite.addTest(self.DummyTest('test_pass'))
         suite.properties = dict(key='value')
         self._test_xmlrunner(suite)
     finally:
         sys.stdout, sys.stderr = old_stdout, old_stderr
Пример #7
0
 def test_xmlrunner_unsafe_unicode(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_unsafe_unicode'))
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertIn(u"<![CDATA[ABCD\n]]>".encode('utf8'), output)
Пример #8
0
 def test_xmlrunner_failfast(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_fail'))
     suite.addTest(self.DummyTest('test_pass'))
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity, failfast=True,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertIn('test_fail'.encode('utf8'), output)
     self.assertNotIn('test_pass'.encode('utf8'), output)
Пример #9
0
 def test_junitxml_xsd_validation_empty_properties(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_fail'))
     suite.addTest(self.DummyTest('test_pass'))
     suite.properties = None
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertNotIn('<properties>'.encode('utf8'), output)
Пример #10
0
 def test_xmlrunner_safe_xml_encoding_name(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     firstline = output.splitlines()[0]
     # test for issue #74
     self.assertIn('encoding="UTF-8"'.encode('utf8'), firstline)
Пример #11
0
 def test_xmlrunner_non_ascii_failures(self):
     suite = unittest.TestSuite()
     suite.addTest(
         self.DummyTest('test_non_ascii_runner_buffer_output_fail'))
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(stream=self.stream,
                                      output=outdir,
                                      verbosity=self.verbosity,
                                      **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertIn(u'Where is the café ?'.encode('utf8'), output)
     self.assertIn(u'The café could not be found'.encode('utf8'), output)
Пример #12
0
 def test_classnames(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     suite.addTest(self.DummySubTest('test_subTest_pass'))
     outdir = BytesIO()
     stream = StringIO()
     runner = xmlrunner.XMLTestRunner(stream=stream, output=outdir, verbosity=0)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertIn('classname="tests.testsuite.DummyTest" name="test_pass"'
                   .encode('utf8'), output)
     self.assertIn('classname="tests.testsuite.DummySubTest" name="test_subTest_pass"'
                   .encode('utf8'), output)
Пример #13
0
 def test_partialmethod(self):
     from functools import partialmethod
     def test_partialmethod(test):
         pass
     class TestWithPartialmethod(unittest.TestCase):
         pass
     setattr(
         TestWithPartialmethod,
         'test_partialmethod',
         partialmethod(test_partialmethod),
     )
     suite = unittest.TestSuite()
     suite.addTest(TestWithPartialmethod('test_partialmethod'))
     self._test_xmlrunner(suite)
Пример #14
0
 def test_xmlrunner_non_ascii(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_non_ascii_skip'))
     suite.addTest(self.DummyTest('test_non_ascii_error'))
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertIn(
         u'message="demonstrating non-ascii skipping: éçà"'.encode('utf8'),
         output)
Пример #15
0
 def test_xmlrunner_invalid_xml_chars_in_doc(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_invalid_xml_chars_in_doc'))
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     # Finally check if we have a valid XML document or not.
     try:
         minidom.parseString(output)
     except Exception as e:  # pragma: no cover
         # note: we could remove the try/except, but it's more crude.
         self.fail(e)
Пример #16
0
    def test_unittest_subTest_with_dots(self):
        # Test for issue #85
        suite = unittest.TestSuite()
        suite.addTest(self.DummySubTest('test_subTest_with_dots'))
        outdir = BytesIO()

        self._test_xmlrunner(suite, outdir=outdir)

        xmlcontent = outdir.getvalue().decode()

        # Method name
        self.assertNotIn('name="subTest', xmlcontent, 'parsing of test method name is not done correctly')
        self.assertIn('name="test_subTest_with_dots (module=\'hello.world.subTest', xmlcontent)

        # Class name
        matchString = 'classname="tests.testsuite.XMLTestRunnerTestCase.DummySubTest.test_subTest_with_dots (module=\'hello.world"'
        self.assertNotIn(matchString, xmlcontent, 'parsing of class name is not done correctly')
        self.assertIn('classname="tests.testsuite.XMLTestRunnerTestCase.DummySubTest"', xmlcontent)
Пример #17
0
 def test_unittest_subTest_fail(self):
     # test for issue #77
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(stream=self.stream,
                                      output=outdir,
                                      verbosity=self.verbosity,
                                      **self.runner_kwargs)
     suite = unittest.TestSuite()
     suite.addTest(self.DummySubTest('test_subTest_fail'))
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertIn(
         b'<testcase classname="tests.testsuite.DummySubTest" '
         b'name="test_subTest_fail (i=0)"', output)
     self.assertIn(
         b'<testcase classname="tests.testsuite.DummySubTest" '
         b'name="test_subTest_fail (i=1)"', output)
Пример #18
0
 def test_junitxml_xsd_validation_order(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_fail'))
     suite.addTest(self.DummyTest('test_pass'))
     suite.properties = dict(key='value')
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     # poor man's schema validation; see issue #90
     i_properties = output.index('<properties>'.encode('utf8'))
     i_system_out = output.index('<system-out>'.encode('utf8'))
     i_system_err = output.index('<system-err>'.encode('utf8'))
     i_testcase = output.index('<testcase'.encode('utf8'))
     self.assertTrue(i_properties < i_testcase < i_system_out < i_system_err)
Пример #19
0
 def test_classnames(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     suite.addTest(self.DummySubTest('test_subTest_pass'))
     outdir = BytesIO()
     stream = StringIO()
     runner = xmlrunner.XMLTestRunner(
         stream=stream, output=outdir, verbosity=0)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertRegexpMatches(
         output,
         r'classname="tests\.testsuite\.(XMLTestRunnerTestCase\.)?'
         r'DummyTest" name="test_pass"'.encode('utf8'),
     )
     self.assertRegexpMatches(
         output,
         r'classname="tests\.testsuite\.(XMLTestRunnerTestCase\.)?'
         r'DummySubTest" name="test_subTest_pass"'.encode('utf8'))
Пример #20
0
 def test_unittest_subTest_mixed(self):
     # test for issue #155
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(stream=self.stream,
                                      output=outdir,
                                      verbosity=self.verbosity,
                                      **self.runner_kwargs)
     suite = unittest.TestSuite()
     suite.addTest(self.DummySubTest('test_subTest_mixed'))
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     output = _strip_xml(
         output, {
             '//testsuite': (),
             '//testcase': ('classname', 'name'),
             '//failure': ('message', ),
         })
     self.assertNotIn('name="test_subTest_mixed (i=0)"'.encode('utf8'),
                      output)
     self.assertIn('name="test_subTest_mixed (i=1)"'.encode('utf8'), output)
Пример #21
0
 def test_unittest_subTest_error(self):
     # test for issue #155
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     suite = unittest.TestSuite()
     suite.addTest(self.DummySubTest('test_subTest_error'))
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     self.assertRegexpMatches(
         output,
         br'<testcase classname="tests\.testsuite\.'
         br'(XMLTestRunnerTestCase\.)?DummySubTest" '
         br'name="test_subTest_error \(i=0\)"')
     self.assertRegexpMatches(
         output,
         br'<testcase classname="tests\.testsuite\.'
         br'(XMLTestRunnerTestCase\.)?DummySubTest" '
         br'name="test_subTest_error \(i=1\)"')
Пример #22
0
    def test_partialmethod(self):
        try:
            from functools import partialmethod
        except ImportError:
            raise unittest.SkipTest(
                'functools.partialmethod is not available.')

        def test_partialmethod(test):
            pass

        class TestWithPartialmethod(unittest.TestCase):
            pass

        setattr(
            TestWithPartialmethod,
            'test_partialmethod',
            partialmethod(test_partialmethod),
        )
        suite = unittest.TestSuite()
        suite.addTest(TestWithPartialmethod('test_partialmethod'))
        self._test_xmlrunner(suite)
Пример #23
0
 def test_junitxml_xsd_validation_order(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_fail'))
     suite.addTest(self.DummyTest('test_pass'))
     suite.addTest(self.DummyTest('test_output_stdout_and_stderr'))
     suite.properties = dict(key='value')
     outdir = BytesIO()
     runner = xmlrunner.XMLTestRunner(
         stream=self.stream, output=outdir, verbosity=self.verbosity,
         **self.runner_kwargs)
     runner.run(suite)
     outdir.seek(0)
     output = outdir.read()
     # poor man's schema validation; see issue #90
     i_properties = output.index('<properties>'.encode('utf8'))
     i_system_out = output.index('<system-out>'.encode('utf8'))
     i_system_err = output.index('<system-err>'.encode('utf8'))
     i_testcase = output.index('<testcase'.encode('utf8'))
     self.assertTrue(i_properties < i_testcase <
                     i_system_out < i_system_err)
     # XSD validation - for good measure.
     validate_junit_report('14c6e39c38408b9ed6280361484a13c6f5becca7', output)
Пример #24
0
    def test_xunit_plugin_transform(self):
        suite = unittest.TestSuite()
        suite.addTest(self.DummyTest('test_fail'))
        suite.addTest(self.DummyTest('test_pass'))
        suite.properties = None
        outdir = BytesIO()
        runner = xmlrunner.XMLTestRunner(
            stream=self.stream, output=outdir, verbosity=self.verbosity,
            **self.runner_kwargs)
        runner.run(suite)
        outdir.seek(0)
        output = outdir.read()

        validate_junit_report('14c6e39c38408b9ed6280361484a13c6f5becca7', output)
        with self.assertRaises(etree.DocumentInvalid):
            validate_junit_report('ae25da5089d4f94ac6c4669bf736e4d416cc4665', output)

        from xmlrunner.extra.xunit_plugin import transform
        transformed = transform(output)
        validate_junit_report('14c6e39c38408b9ed6280361484a13c6f5becca7', transformed)
        validate_junit_report('ae25da5089d4f94ac6c4669bf736e4d416cc4665', transformed)
        self.assertIn('test_pass'.encode('utf8'), transformed)
        self.assertIn('test_fail'.encode('utf8'), transformed)
Пример #25
0
    def test_unittest_subTest(self):
        # test for issue #77
        class DummySubTest(unittest.TestCase):
            def test_subTest(self):
                for i in range(2):
                    with self.subTest(i=i):
                        self.fail('this is a subtest.')

        outdir = BytesIO()
        runner = xmlrunner.XMLTestRunner(stream=self.stream,
                                         output=outdir,
                                         verbosity=self.verbosity,
                                         **self.runner_kwargs)
        suite = unittest.TestSuite()
        suite.addTest(DummySubTest('test_subTest'))
        runner.run(suite)
        outdir.seek(0)
        output = outdir.read()
        self.assertIn(
            b'<testcase classname="tests.testsuite.DummySubTest" '
            b'name="test_subTest (i=0)"', output)
        self.assertIn(
            b'<testcase classname="tests.testsuite.DummySubTest" '
            b'name="test_subTest (i=1)"', output)
Пример #26
0
 def test_xmlrunner_cdata_section(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_cdata_section'))
     self._test_xmlrunner(suite)
Пример #27
0
 def test_xmlrunner_error_in_call(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyErrorInCallTest('test_pass'))
     self._test_xmlrunner(suite)
     testsuite_output = self.stream.getvalue()
     self.assertIn('Exception: Massive fail', testsuite_output)
Пример #28
0
 def test_junitxml_properties(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     suite.properties = dict(key='value')
     self._test_xmlrunner(suite)
Пример #29
0
 def test_opaque_decorator(self):
     suite = unittest.TestSuite()
     suite.addTest(self.DecoratedUnitTest('test_pass'))
     self._test_xmlrunner(suite)
     testsuite_output = self.stream.getvalue()
     self.assertNotIn('IOError:', testsuite_output)
Пример #30
0
 def test_xmlrunner_elapsed_times(self):
     self.runner_kwargs['elapsed_times'] = False
     suite = unittest.TestSuite()
     suite.addTest(self.DummyTest('test_pass'))
     self._test_xmlrunner(suite)