[Tutor] still nosing around

Steven D'Aprano steve at pearwood.info
Wed May 22 02:53:54 CEST 2013


On 22/05/13 10:25, Jim Mooney wrote:
> Okay, why is nose saying this run is OK when I purposely screwed it up?
>
> import nose
>
> def stand_and_deliver():
>      return 52
>
> def stupid_error():
>      '''This is my stupid error'''
>      assert stand_and_deliver() == 17
>
> if __name__ == '__main__':
>      nose.runmodule()
>
> nose result:
>
> Ran 0 tests in 0.000s
>
> OK


"Ran 0 tests" -- does that give you a clue? Nose is not running any tests. I have never used nose, so I don't know how you write tests for it, but whatever you are supposed to do, you haven't done it.

Let's see what Google has to say... this looks promising.

http://nose.readthedocs.org/en/latest/testing.html


As far as I can tell from about 30 seconds reading that page, your tests have to inherit from unittest.TestCase, or they have to be in a function, class or module called TestMatch.

(There must be something useful about nose, but frankly I don't see the benefit of running it instead of just using unittest directly.)


Personally, I recommend you start with doctests rather than nose or unittest. Change your module to this:

=== cut ===

def stand_and_deliver():
     """Always returns 52.

     >>> stand_and_deliver()
     52

     """
     return 52


def stupid_error():
     """This is my stupid error.

     >>> stupid_error()
     17

     """
     return stand_and_deliver() + 1000


if __name__ == '__main__':
     import doctest
     failed, run = doctest.testmod()
     if failed == 0:
         print("Successfully ran %d doc tests." % run)


=== cut ===



Run that file, and you should get 1 failed test out of 2, and a description of how it failed.





-- 
Steven


More information about the Tutor mailing list