Publish unittest results from test discovery

Discussion in 'Python' started by Lucretiel, Aug 25, 2012.

  1. Lucretiel

    Lucretiel Guest

    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 testcode?
    Lucretiel, Aug 25, 2012
    #1
    1. Advertising

  2. On Fri, 24 Aug 2012 17:25:05 -0700, Lucretiel wrote:

    [...]
    > Is there a way to get unittest disover to work with xmlrunner


    Steady on there! It's only been about an hour and a half since you last
    asked this exact same question, almost word-for-word identical. The more
    specialised the question, the longer it may take for somebody who knows
    the answer to reply. For something like this, I would wait at least a
    couple of days before replying to your original post. (Don't just re-post
    the question in a new thread, keep the response in a single thread.)

    I have no idea about xmlrunner and unittest discovery, sorry.


    --
    Steven
    Steven D'Aprano, Aug 25, 2012
    #2
    1. Advertising

  3. On 25/08/2012 02:03, Steven D'Aprano wrote:
    > On Fri, 24 Aug 2012 17:25:05 -0700, Lucretiel wrote:
    >
    > [...]
    >> Is there a way to get unittest disover to work with xmlrunner

    >
    > Steady on there! It's only been about an hour and a half since you last
    > asked this exact same question, almost word-for-word identical. The more
    > specialised the question, the longer it may take for somebody who knows
    > the answer to reply. For something like this, I would wait at least a
    > couple of days before replying to your original post. (Don't just re-post
    > the question in a new thread, keep the response in a single thread.)
    >
    > I have no idea about xmlrunner and unittest discovery, sorry.
    >
    >


    I entirely agree with Steven's comments. I'd put a question like this
    on a specialised list. How about gmane.comp.python.testing.general ?
    Sorry I've no idea what it's called elsewhere.

    --
    Cheers.

    Mark Lawrence.
    Mark Lawrence, Aug 25, 2012
    #3
  4. Lucretiel

    Peter Otten Guest

    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
    $
    Peter Otten, Aug 25, 2012
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Tim Royal
    Replies:
    0
    Views:
    717
    Tim Royal
    Aug 28, 2008
  2. Paul  Moore
    Replies:
    1
    Views:
    384
    Paul Moore
    Oct 14, 2008
  3. Fuzzyman
    Replies:
    0
    Views:
    237
    Fuzzyman
    Aug 20, 2009
  4. Replies:
    0
    Views:
    167
  5. Paul  Moore
    Replies:
    3
    Views:
    97
    Terry Reedy
    Dec 20, 2013
Loading...

Share This Page