Merge pull request #1799 from cryporchild/junitxml-tests-tally-fix
Fix #1798 to include errors in total tests in junit xml output.
This commit is contained in:
		
						commit
						34925a31a9
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							| 
						 | 
					@ -24,6 +24,7 @@ Carl Friedrich Bolz
 | 
				
			||||||
Charles Cloud
 | 
					Charles Cloud
 | 
				
			||||||
Charnjit SiNGH (CCSJ)
 | 
					Charnjit SiNGH (CCSJ)
 | 
				
			||||||
Chris Lamb
 | 
					Chris Lamb
 | 
				
			||||||
 | 
					Christian Boelsen
 | 
				
			||||||
Christian Theunert
 | 
					Christian Theunert
 | 
				
			||||||
Christian Tismer
 | 
					Christian Tismer
 | 
				
			||||||
Christopher Gilling
 | 
					Christopher Gilling
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,6 +65,9 @@
 | 
				
			||||||
* Fixed scope overriding inside metafunc.parametrize (`#634`_).
 | 
					* Fixed scope overriding inside metafunc.parametrize (`#634`_).
 | 
				
			||||||
  Thanks to `@Stranger6667`_ for the PR.
 | 
					  Thanks to `@Stranger6667`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Fixed the total tests tally in junit xml output (`#1798`_).
 | 
				
			||||||
 | 
					  Thanks to `@cryporchild`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
| 
						 | 
					@ -85,6 +88,7 @@
 | 
				
			||||||
.. _#1597: https://github.com/pytest-dev/pytest/pull/1597
 | 
					.. _#1597: https://github.com/pytest-dev/pytest/pull/1597
 | 
				
			||||||
.. _#1605: https://github.com/pytest-dev/pytest/issues/1605
 | 
					.. _#1605: https://github.com/pytest-dev/pytest/issues/1605
 | 
				
			||||||
.. _#1626: https://github.com/pytest-dev/pytest/pull/1626
 | 
					.. _#1626: https://github.com/pytest-dev/pytest/pull/1626
 | 
				
			||||||
 | 
					.. _#1798: https://github.com/pytest-dev/pytest/pull/1798
 | 
				
			||||||
.. _#460: https://github.com/pytest-dev/pytest/pull/460
 | 
					.. _#460: https://github.com/pytest-dev/pytest/pull/460
 | 
				
			||||||
.. _#634: https://github.com/pytest-dev/pytest/issues/634
 | 
					.. _#634: https://github.com/pytest-dev/pytest/issues/634
 | 
				
			||||||
.. _#717: https://github.com/pytest-dev/pytest/issues/717
 | 
					.. _#717: https://github.com/pytest-dev/pytest/issues/717
 | 
				
			||||||
| 
						 | 
					@ -93,6 +97,7 @@
 | 
				
			||||||
.. _@bagerard: https://github.com/bagerard
 | 
					.. _@bagerard: https://github.com/bagerard
 | 
				
			||||||
.. _@BeyondEvil: https://github.com/BeyondEvil
 | 
					.. _@BeyondEvil: https://github.com/BeyondEvil
 | 
				
			||||||
.. _@blueyed: https://github.com/blueyed
 | 
					.. _@blueyed: https://github.com/blueyed
 | 
				
			||||||
 | 
					.. _@cryporchild: https://github.com/cryporchild
 | 
				
			||||||
.. _@davehunt: https://github.com/davehunt
 | 
					.. _@davehunt: https://github.com/davehunt
 | 
				
			||||||
.. _@DRMacIver: https://github.com/DRMacIver
 | 
					.. _@DRMacIver: https://github.com/DRMacIver
 | 
				
			||||||
.. _@eolo999: https://github.com/eolo999
 | 
					.. _@eolo999: https://github.com/eolo999
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -369,7 +369,7 @@ class LogXML(object):
 | 
				
			||||||
        suite_stop_time = time.time()
 | 
					        suite_stop_time = time.time()
 | 
				
			||||||
        suite_time_delta = suite_stop_time - self.suite_start_time
 | 
					        suite_time_delta = suite_stop_time - self.suite_start_time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        numtests = self.stats['passed'] + self.stats['failure'] + self.stats['skipped']
 | 
					        numtests = self.stats['passed'] + self.stats['failure'] + self.stats['skipped'] + self.stats['error']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        logfile.write('<?xml version="1.0" encoding="utf-8"?>')
 | 
					        logfile.write('<?xml version="1.0" encoding="utf-8"?>')
 | 
				
			||||||
        logfile.write(Junit.testsuite(
 | 
					        logfile.write(Junit.testsuite(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,6 +102,27 @@ class TestPython:
 | 
				
			||||||
        node = dom.find_first_by_tag("testsuite")
 | 
					        node = dom.find_first_by_tag("testsuite")
 | 
				
			||||||
        node.assert_attr(name="pytest", errors=0, failures=1, skips=3, tests=5)
 | 
					        node.assert_attr(name="pytest", errors=0, failures=1, skips=3, tests=5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_summing_simple_with_errors(self, testdir):
 | 
				
			||||||
 | 
					        testdir.makepyfile("""
 | 
				
			||||||
 | 
					            import pytest
 | 
				
			||||||
 | 
					            @pytest.fixture
 | 
				
			||||||
 | 
					            def fixture():
 | 
				
			||||||
 | 
					                raise Exception()
 | 
				
			||||||
 | 
					            def test_pass():
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            def test_fail():
 | 
				
			||||||
 | 
					                assert 0
 | 
				
			||||||
 | 
					            def test_error(fixture):
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            @pytest.mark.xfail
 | 
				
			||||||
 | 
					            def test_xpass():
 | 
				
			||||||
 | 
					                assert 1
 | 
				
			||||||
 | 
					        """)
 | 
				
			||||||
 | 
					        result, dom = runandparse(testdir)
 | 
				
			||||||
 | 
					        assert result.ret
 | 
				
			||||||
 | 
					        node = dom.find_first_by_tag("testsuite")
 | 
				
			||||||
 | 
					        node.assert_attr(name="pytest", errors=1, failures=1, skips=1, tests=4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_timing_function(self, testdir):
 | 
					    def test_timing_function(self, testdir):
 | 
				
			||||||
        testdir.makepyfile("""
 | 
					        testdir.makepyfile("""
 | 
				
			||||||
            import time, pytest
 | 
					            import time, pytest
 | 
				
			||||||
| 
						 | 
					@ -128,7 +149,7 @@ class TestPython:
 | 
				
			||||||
        result, dom = runandparse(testdir)
 | 
					        result, dom = runandparse(testdir)
 | 
				
			||||||
        assert result.ret
 | 
					        assert result.ret
 | 
				
			||||||
        node = dom.find_first_by_tag("testsuite")
 | 
					        node = dom.find_first_by_tag("testsuite")
 | 
				
			||||||
        node.assert_attr(errors=1, tests=0)
 | 
					        node.assert_attr(errors=1, tests=1)
 | 
				
			||||||
        tnode = node.find_first_by_tag("testcase")
 | 
					        tnode = node.find_first_by_tag("testcase")
 | 
				
			||||||
        tnode.assert_attr(
 | 
					        tnode.assert_attr(
 | 
				
			||||||
            file="test_setup_error.py",
 | 
					            file="test_setup_error.py",
 | 
				
			||||||
| 
						 | 
					@ -195,7 +216,7 @@ class TestPython:
 | 
				
			||||||
        result, dom = runandparse(testdir)
 | 
					        result, dom = runandparse(testdir)
 | 
				
			||||||
        assert result.ret
 | 
					        assert result.ret
 | 
				
			||||||
        node = dom.find_first_by_tag("testsuite")
 | 
					        node = dom.find_first_by_tag("testsuite")
 | 
				
			||||||
        node.assert_attr(errors=1, tests=0)
 | 
					        node.assert_attr(errors=1, tests=1)
 | 
				
			||||||
        tnode = node.find_first_by_tag("testcase")
 | 
					        tnode = node.find_first_by_tag("testcase")
 | 
				
			||||||
        tnode.assert_attr(classname="pytest", name="internal")
 | 
					        tnode.assert_attr(classname="pytest", name="internal")
 | 
				
			||||||
        fnode = tnode.find_first_by_tag("error")
 | 
					        fnode = tnode.find_first_by_tag("error")
 | 
				
			||||||
| 
						 | 
					@ -341,7 +362,7 @@ class TestPython:
 | 
				
			||||||
        result, dom = runandparse(testdir)
 | 
					        result, dom = runandparse(testdir)
 | 
				
			||||||
        assert result.ret
 | 
					        assert result.ret
 | 
				
			||||||
        node = dom.find_first_by_tag("testsuite")
 | 
					        node = dom.find_first_by_tag("testsuite")
 | 
				
			||||||
        node.assert_attr(errors=1, tests=0)
 | 
					        node.assert_attr(errors=1, tests=1)
 | 
				
			||||||
        tnode = node.find_first_by_tag("testcase")
 | 
					        tnode = node.find_first_by_tag("testcase")
 | 
				
			||||||
        tnode.assert_attr(
 | 
					        tnode.assert_attr(
 | 
				
			||||||
            file="test_collect_error.py",
 | 
					            file="test_collect_error.py",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue