Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #27877

Re: Publish unittest results from test discovery

From Peter Otten <__peter__@web.de>
Subject Re: Publish unittest results from test discovery
Date 2012-08-25 17:55 +0200
Organization None
References <afce5fc2-854e-4c69-95ba-248bc5a34fd8@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.3806.1345910102.4697.python-list@python.org> (permalink)

Show all headers | View raw


Lucretiel wrote:

> So I've started using unittest, and I love it. I use testdiscovery (python
> -m unittest discover) so that I can distribute my tests and don't have to
> manage them all manually. I wanted to start publishing my test results to
> xml, though. I found xmlrunner by googling around, but it requires me to
> add an if __name__ == '__main__' block to my code, which isn't executed by
> unittest discover. Is there a way to get unittest disover to work with
> xmlrunner, or to some other way to solve this without restructuring all my
> test code?

I don't see where you could specify a test runner on the commandline, but 
you can reuse the discovery code in your own scripts. For the following 
example I basically copied unittest.__main__.py:

$ cat discover.py 
#!/usr/bin/env python
import xmlrunner

__unittest = True

from unittest.main import main, TestProgram, USAGE_AS_MAIN
TestProgram.USAGE = USAGE_AS_MAIN

main(module=None, testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
$ cat test_alpha.py 
import unittest

class T(unittest.TestCase):
    def test_alpha(self):
        pass
    def test_beta(self):
        self.assertEquals(["a", "b", "c"], ["a", "B", "c"])
$ ./discover.py discover

Running tests...
----------------------------------------------------------------------
.F
======================================================================
FAIL [0.001s]: test_beta (test_alpha.T)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/somewhere/over/the/rainbow/discover/test_alpha.py", line 7, in 
test_beta
    self.assertEquals(["a", "b", "c"], ["a", "B", "c"])
AssertionError: Lists differ: ['a', 'b', 'c'] != ['a', 'B', 'c']

First differing element 1:
b
B

- ['a', 'b', 'c']
?        ^

+ ['a', 'B', 'c']
?        ^


----------------------------------------------------------------------
Ran 2 tests in 0.002s

FAILED (failures=1)

Generating XML reports...
$ ls
discover.py  test_alpha.py  test_alpha.pyc  test-reports
$ ls test-reports/
TEST-test_alpha.T.xml
$ 

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Publish unittest results from test discovery Lucretiel <lucretiel@gmail.com> - 2012-08-24 17:25 -0700
  Re: Publish unittest results from test discovery Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-08-25 01:03 +0000
    Re: Publish unittest results from test discovery Mark Lawrence <breamoreboy@yahoo.co.uk> - 2012-08-25 08:57 +0100
  Re: Publish unittest results from test discovery Peter Otten <__peter__@web.de> - 2012-08-25 17:55 +0200

csiph-web