On 11/15/06, Maciek Fijalkowski <[EMAIL PROTECTED]> wrote:
> Carl Friedrich Bolz wrote:
>
> >Pierre Rouleau wrote:
> >
> >
> >>On 11/14/06, Carl Friedrich Bolz <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >>>I am not quite sure I buy that argument since py.test tells you the time
> >>>that the test itself took (if you use the -v argument) or that all tests
> >>>together take (at the end of each test run). As far as I remember, these
> >>>times don't include any startup times. Yes, wall clock time of the whole
> >>>test run is quite a bad measure, but you don't have to use it anyway.
> >>>
> >>>Cheers,
> >>>
> >>>Carl Friedrich
> >>>
> >>>
> >>>
> >>I didn't realize that the time of *each* test is shown when the -v
> >>option is used.  Thanks for pointing that out.
> >>
> >>
> >
> >you're welcome :-)
> >
> >Note that I didn't mean to imply that it isn't worthwhile to make
> >py.test startup time smaller. it's definitely a good thing to do, since
> >testing should have low overhead.
> >
> >Cheers,
> >
> >Carl Friedrich
> >_______________________________________________
> >py-dev mailing list
> >py-dev@codespeak.net
> >http://codespeak.net/mailman/listinfo/py-dev
> >
> >
> I've profiled it a bit. Right now (for me) your tests are about 3x
> slower that unittests. It still can be improved somehow.
>
> Btw: Tests are unfair, cause collection encounters 5k tests for py.test
> and 13 for unittests, if you rewrite it so they'll be equal it would be
> better. It's not good excuse anyway ;-)
>
> I'll try to work a bit more on it, but I guess achieving 2x in this
> particular case would be enough. If you still encounter massive
> slowdowns in different enviroments, do not hesitate to contact us.
>
True, the code I sent you is not comparing the exact same tests and it
is unfair.
So, as I kept looking into unit test for Python, I found nose and its
nosetests that essentially does the same as py.test (without having
the same design goals as the Py lib).  I ran the same test on both
tools.

The results are:
- py.test tests in [4.30s, 4.17s, 4.28s, 4.42s]
- nosetests tests in [ 1.48s, 1.43s, 1.40s, 1.50s]

So it looks like achieving a 2x would make it run in the same ballpark
as nosetests (at least for that code).

I do like py.test error report better than nosetest though. The
reporting is less verbose.

py.test::

    
_______________________________________________________________________________
    ________________________ entrypoint: test_bad_roman[0]
________________________

        def check(exception_cls, invalid_numeral):
            print 'Testing : ', invalid_numeral
    E       raises(exception_cls, roman.fromRoman, invalid_numeral)
    >       ExceptionFailure: DID NOT RAISE

    [D:\dev\python\test\test_roman.py:164]
    - - - - - - - - - - - - - -  [0]: recorded stdout - - - - - - - -
- - - - - - -
    Testing :  MMMM

    
_______________________________________________________________________________
    ============ tests finished: 5023 passed, 1 failed in 4.17 seconds
============

and the same failure shown by nosetest::

    ======================================================================
    ERROR: test_roman.test_bad_roman:(<class
roman.InvalidRomanNumeralError at 0x00C5DDB0>, 'MMMM')
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "c:\python24\lib\site-packages\nose-0.9.1-py2.4.egg\nose\case.py",
line 52, in runTest
        self.testFunc()
      File "c:\python24\lib\site-packages\nose-0.9.1-py2.4.egg\nose\loader.py",
line 324, in run
        expr[0](*expr[1:])
      File "D:\dev\python\test\test_roman.py", line 164, in check
        raises(exception_cls, roman.fromRoman, invalid_numeral)
      File "C:\py-dist\py\test\raises.py", line 39, in raises
        expr=args, expected=ExpectedException)
    ExceptionFailure: DID NOT RAISE

    -------------------- >> begin captured stdout << ---------------------
    Testing :  MMMM

    --------------------- >> end captured stdout << ----------------------
    ----------------------------------------------------------------------
    Ran 5024 tests in 1.407s

    FAILED (errors=1)


Cheers,

P.R.
_______________________________________________
py-dev mailing list
py-dev@codespeak.net
http://codespeak.net/mailman/listinfo/py-dev

Reply via email to