fix issue47 - fix time-per-test timing output for junitxml

This commit is contained in:
holger krekel 2011-05-28 14:03:10 +02:00
parent 70d22fbe9a
commit 8dc4e732f0
5 changed files with 17 additions and 5 deletions

View File

@ -1,6 +1,7 @@
Changes between 2.0.3 and DEV
----------------------------------------------
- fix issue47: timing output in junitxml for test cases is now correct
- introduce XXX pytest_configure_funcargs hack (thanks Ronny)
- env/username expansion for junitxml file path (fixes issue44)

View File

@ -1,2 +1,2 @@
#
__version__ = '2.0.4.dev'
__version__ = '2.1.0.dev1'

View File

@ -76,7 +76,7 @@ class LogXML(object):
names = report.nodeid.split("::")
names[0] = names[0].replace("/", '.')
names = tuple(names)
d = {'time': self._durations.pop(names, "0")}
d = {'time': self._durations.pop(report.nodeid, "0")}
names = [x.replace(".py", "") for x in names if x != "()"]
classnames = names[:-1]
if self.prefix:
@ -170,12 +170,11 @@ class LogXML(object):
self.append_skipped(report)
def pytest_runtest_call(self, item, __multicall__):
names = tuple(item.listnames())
start = time.time()
try:
return __multicall__.execute()
finally:
self._durations[names] = time.time() - start
self._durations[item.nodeid] = time.time() - start
def pytest_collectreport(self, report):
if not report.passed:

View File

@ -22,7 +22,7 @@ def main():
name='pytest',
description='py.test: simple powerful testing with Python',
long_description = long_description,
version='2.0.4.dev',
version='2.1.0.dev1',
url='http://pytest.org',
license='MIT license',
platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

View File

@ -39,6 +39,18 @@ class TestPython:
node = dom.getElementsByTagName("testsuite")[0]
assert_attr(node, errors=0, failures=1, skips=3, tests=2)
def test_timing_function(self, testdir):
testdir.makepyfile("""
import time, pytest
def test_sleep():
time.sleep(0.01)
""")
result, dom = runandparse(testdir)
node = dom.getElementsByTagName("testsuite")[0]
tnode = node.getElementsByTagName("testcase")[0]
val = tnode.getAttributeNode("time").value
assert float(val) >= 0.01
def test_setup_error(self, testdir):
testdir.makepyfile("""
def pytest_funcarg__arg(request):