[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