Skip to content

Commit 93fdad2

Browse files
authored
Merge pull request #3499 from jeffreyrack/3491-junit-logging
3491 - Fixed a bug where stdout and stderr were logged twice by junitxml for xfail tests.
2 parents 48215fd + b4e0265 commit 93fdad2

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

_pytest/junitxml.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ def append_skipped(self, report):
224224
Junit.skipped("%s:%s: %s" % (filename, lineno, skipreason),
225225
type="pytest.skip",
226226
message=skipreason))
227-
self.write_captured_output(report)
227+
self.write_captured_output(report)
228228

229229
def finalize(self):
230230
data = self.to_xml().unicode(indent=0)

changelog/3491.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed a bug where stdout and stderr were logged twice by junitxml when a test was marked xfail.

testing/test_junitxml.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,23 @@ def test_xfail():
458458
fnode.assert_attr(message="expected test failure")
459459
# assert "ValueError" in fnode.toxml()
460460

461+
def test_xfail_captures_output_once(self, testdir):
462+
testdir.makepyfile("""
463+
import sys
464+
import pytest
465+
466+
@pytest.mark.xfail()
467+
def test_fail():
468+
sys.stdout.write('XFAIL This is stdout')
469+
sys.stderr.write('XFAIL This is stderr')
470+
assert 0
471+
""")
472+
result, dom = runandparse(testdir)
473+
node = dom.find_first_by_tag("testsuite")
474+
tnode = node.find_first_by_tag("testcase")
475+
assert len(tnode.find_by_tag('system-err')) == 1
476+
assert len(tnode.find_by_tag('system-out')) == 1
477+
461478
def test_xfailure_xpass(self, testdir):
462479
testdir.makepyfile("""
463480
import pytest

0 commit comments

Comments
 (0)